python的pandas数据分析处理基础学习

发布时间:2023年12月28日

pandas学习

一、 pandas基础

1. 什么是pandas?

一个开源的python类库:用于数据分析、数据处理、数据可视化

  • 高性能
  • 容易使用的数据结构
  • 容易使用的数据分析工具

很方便和其他类库一起使用:

  • numpy:用于数学计算

  • scikit-learn:用于机器学习

2. pandas 的安装

方法一:

pip3 install pandas

方法二:

下载使用Python类库集成安装包:anaconda      link: https://www.anaconda.com
当今最流行的python数据分析发行版
已经安装了数据分析需要的几乎所有的类库0
3. pandas读取数据

pandas 需要先读取表格类型的数据,然后进行分析

数据类型说明pandas读取方式
csv ,tsv,txt用逗号,tab分割的纯文本文件pd.read_csv
excel微软xls或者xlsxpd.read_excel
mysql关系型数据库表pd.read_sql
  • 读取csv文件

    import os
    import pandas as pd
    
    fpath = "E:\MyProject\DataAnalysis\my_pandas\Datas\cpu_temp.csv"
    # 读取csv文件的所有数据
    datas = pd.read_csv(fpath)
    # 查看前几行的数据  默认前5行
    da = datas.head()
    print(da)
    # 查看数据的形状,返回行和列
    ds = datas.shape
    print(ds)
    # 查看列名列表
    df = datas.columns
    print(df)
    # 查看索引列
    dg = datas.index
    print(dg)
    # 查看每列的数据类型
    dh = datas.dtypes
    print(dh)
    
4. Pandas数据结构
import pandas as pd
import numpy as np
  • DataFrame:二维数据、整个表格、多行多列

    创建DataFrame的方法

    • 根据多个字典序列创建dataframe

      data = {
          'age':[23,45,32,56,32,54,22],
          'id': [1,2,3,4,5,6,7]
          'year': [1991,1992,1993,1994,1995,1996,1997]
      
      }
      d1 = pandas.DataFrame(data)
      
    • df.columns 和df.index

  • Series: 一维数据、一行或一列

    创建Series的三种方法:

    • 仅使用数据列表即可产生最简单的Series

      sl = pd.Series([1,'a',5.2,7])
      
    • 创建一个具有标签索引的Series

      s2 = pd.Series([1,'a',5.2,7], index=['d','e','f','g'])
      
    • 使用python字典创建Series

      sdata = {'a':3500,'b'=4566, 'c'=12556,'d'=12435}
      s3 = pd.Series(sdata)
      
5. Pandas 数据查询

Pandas查询数据的几种方法

  • df.loc 根据行,列的标签值查询

    • 使用单个标签值(label)查询数据

    • 使用值列表批量查询

    • 使用数值区间进行范围查询

    • 使用条件表达式查询

      df.loc[df["age"]<30,:]
      
      df.loc[(df['a']<=30) & (df['d']>=15) & (df[f]=='ssa'& (df['s']==1), :]
      
    • 调用函数查询

      df.loc[lambda df : (df['a']<30)& (df['d']>=15),:]
      
  • df.iloc 根据行,列的数字位置查询

  • df.where

  • df.query

注意:.loc既能查询,又能覆盖写入,强烈推荐

6. Pandas新增数据列
  • 直接赋值 修改列数值

    将第b列的含有@符合的值替换掉
    df.loc[:,"b"] = df["b"].str.replace("@","").astype('int32')
    
    

    计算差值新增一列插值

    df[:,"chazhi"] = df["a"] - df["b"]
    
  • df.apply

    index则axis=0  columns则axis=1
    
    
    def get_temp_type(x):
        if x["CPU0_Temp"]>60:
            return '高温'
        elif x["CPU0_Temp"] < 50:
            return '低温'
        return '常温'
    df.loc[:,'temp_type'] = df.apply(get_temp_type,axis=1)
    df['temp_type'].value_counts()
    
  • df.assign

    可以是lambda函数也可以是自定义函数
    df.assign(
        cpu0_huashi = lambda x :x['CPU0_Temp']*9/5 + 32,
        cpu1_huashi = lambda x: x['CPU1_Temp']*9/5 + 32
    
    )
    
  • 按条件选择分组分别赋值

    先创建空列(这里第一张创建新列的方式
    df["cup_type"] = ''
    df.loc[df['CPU1_Temp']- df['CPU0_Temp']>10,"cpu_type"] = "温差大"
    df.loc[df['CPU1_Temp']- df['CPU0_Temp']<=10,"cpu_type"] = "温差正常"
    
7. Pandas的数据统计函数
  • 汇总类统计

    提取所有数字列统计结果
    df.describe()
    
  • 唯一去重和按值计算

    • 唯一性去重

      一般不用于数值列,而是枚举,分类列

      df['b'].unique()
      
    • 按值计算

      df[‘a’].value_counts()

  • 相关系数和协方差

    用途(超级厉害):

    1. 两只股票,是不是同涨同跌?程度多大?正相关还是负相关?

    2. 产品销量的波动,跟哪些因素正相关、负相关,程度多大?

      对于两个变量X、Y

    • 协方差:衡量同向反向程度,如果协方差为正,说明X、Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X、Y反向变化,协方差越小说明反向程度越高

      df.cov()
      
    • 相关系数:衡量相似程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大

      df.corr()
      
      df['a'].corr(df['b']) 查看a和b的相关系数
      df['a'].corr(df['b']-df['c'])
      
8. Pandas缺失值处理

pandas使用函数处理缺失值

  • isnull和notnull:检测是否为空值,可用于df和series

  • dropna:丢弃、删除缺失值 【下面是参数介绍】

    • axis:删除还是列,{0 or ‘index’,1 or ‘columns’},default 0
    • how: 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
    • inplace:如果为True则修改当前df,否则返回新的df
  • fillna:填充空值 【下面是参数介绍】

    • value:用于填充的值,可以是单个值,或者字典(key为列名,value是值)
    • method:等于ffill使用前一个不为空的值填充for word fill;等于bfill使用后一个不为空的值填充back word fill
    • axis:按行还是列填充,{0 or ‘index’,1 or ‘columns’}
    • inplace:如果为True则修改当前df,否则返回新的df
文章来源:https://blog.csdn.net/qq_42746084/article/details/135265719
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。