python数据分析学习-pandas

matplotlib画图

numpy处理数值型数组

pandas数值型数组、字符串、时间序列、列表、字典所有数据类型

Pandas

​ 使用中存在降维,提高运行速度。DataFrame-Series-Python单值

  1. Pandas数据读取

    pd.read_csv(),csv、tsv、txt,用逗号\tab分隔的纯文本文件

    1. 读取csv,使用默认的标题行、逗号分隔符
      rating = pd.read_csv(path)
      

      head()、shape()行列元组、columns列名列表、index索引序列、dtype每列数据类型

    2. 读取txt文件,自己指定分隔符、列名
      pvuv = pd.read_csv(path,** sep='\t'**, **header=None, names=['l1', 'l2', 'l3']**)
      

    pd.read_excel(),微软xls或xlsx文件

    1. 读取excel文件
      pvuv = pd.read_excel(path)
      

    pd.read_sql(),mysql关系型数据库表

    1. 读取MySQL数据库
      import pymysql
      conn = pymysql.connect(host=,user,password,database,charset)
      mysql_page = pd.read_sql("select * from 表名",con=conn)
      
  2. Pandas数据结构
    1. DataFrame & Series

      1. Series

        一维数据,一行或一列。

        1. 数据列表创建series

          s1 = pd.Series([1,'a',5.2,7]) # 左侧由上到下索引0-3,右侧列表的数据
          

          index、values

        2. 创建具有标签索引的series

          s2 = pd.Series([1,'a',5.2,7], index=['d','b','a','c'])# 左侧由上到下索引dbac,右侧列表的数据
          
        3. 使用python字典创建series

          sdata = {'a':1,'b':2,'c':3}
          s3 = pd.Series(sdata) # 键=索引,值=数据
          

          类似dict的查询方式

          s3[‘a’]返回一个索引数据(python原生数据类型),s3[[‘a’,'b]]返回两个索引的数据(series类型)

      2. DataFrame

        二维数据,行索引index,列表名columns。表格型数据结构,行索引和series行索引对应,每一列可不同数据类型

        1. 多个字典序列创建dataframe

          data = {'a':[1,2,3,4],'b':[5,6,7,8],'c':[0,9,8,7]}
          df = pd.DataFrame(data)# 行索引默认0-3,列索引abc
          
      3. 从DataFrame中查询出Series

        只查询一行或一列,返回series,多行、多列返回dataframe

        1. 查询列

          df[‘a’]返回series,df[[‘a’,'b]]返回dataframe

        2. 查询行

          DataFrame切片包含右侧

          df.loc[1] # 第1行
          df.loc[1:3]# 1~3行
          
  3. Pandas数据查询
    df.set_index('把读到的一列作为行索引',inplace=True) #直接改变df
    df.loc[:,'列名'] = df['列名'].str.replace("C", "").astype('int32')
    

    df.loc()根据行、列的标签值查询;既能查询,又能覆盖写入

    1. 按单个label值

      df.loc['行', '列']
      df.loc['行',['列1','列2']]
      
    2. 按值列表批量查询

      df.loc[['行1','行2'],'列1']
      df.loc[['行1','行2'],['列1','列2']]
      
    3. 按数值区间范围查询

      df.loc['行1':'行5', '列']# 1-5行,series
      df.loc['行1', '列1':'列5']# 1-5列,series
      df.loc['行1':'行5', '列1':'列5']# 1-5行,1-5列
      
    4. 按条件表达式

      df.loc[df['列1']<10, :] # 只返回表达式boolean为True的行
      
    5. 调用函数

      
      df.loc[lamda df : (df['列1']<10), :] # 类似条件表达式
      
  4. Pandas新增数据列
    1. 直接赋值

      df.loc[:, 'new'] = df['old']
      
    2. df.apply方法

      沿着DataFrame的轴

      df.loc[:,'列1'] = df.apply(hanshu, axis=1) # axis=1遍历行,=0遍历列
      df['列1'].value_counts() # 对每个值记次数
      
    3. df.assign方法

      不修改本身,返回新对象。增加多个新的列

    4. 按条件选择分组分别赋值

      df['new'] = ''
      df.loc[df['列1']<10, 'new'] = '小'
      
  5. Pandas数据统计函数
    1. 汇总类统计
      df.describe() # 提取所有数字列统计结果
      df['列'].mean()# 查看单个series,最小最大平均值
      
    2. 唯一去重和按值统计

      一般用于非数值列,用于枚举、分类列

      df['列'].unique()# 某一列有哪些取值
      
      df['列'].value_counts()# 统计值出现频次
      
    3. 相关系数和协方差

      教程P6

  6. Pandas缺失值处理

    检测:isnull、notnull

    丢弃:dropna

    填充:fillna

  7. Pandas的报警SettingWithCopyWarning

    pandas的dataframe的修改写操作,只允许在源dataframe上进行

    df.loc[condition,'aa']# 将get+set的两步操作,改成set的一步操作
    #或者先复制copy,再对复制的修改
    
  8. Pandas数据排序
    1. Series

      sort_values(ascending=)

    2. DataFrame

      1. 单列排序

        df.sort_values(by=‘a’ , ascending=)

      2. 多列排序

        df.sort_values(by=[‘a’, ‘b’] , ascending=[False,True])

  9. Pandas字符串处理
    1. 获取Series的str属性,使用字符串处理函数

      df[’’].str

    2. 布尔条件查询

      condition = df[’’].str.startwith[’’]

      df[condition]

    3. 多次str处理的链式操作

    4. 使用正则表达式的处理

      df[''].str.replace("[年月日]","") # Series.str默认开启了正则表达式模式
      
  10. Pandas的axis参数

    按哪个axis,遍历哪个axis,另一个不动

    1. axis=0或’index’

      单行操作:某一行

      聚合操作:跨行

    2. axis=1或’columns’

      单列操作:某一列

      聚合操作:跨列

  11. Pandas的索引index用途

    1. 使用index查询数据

      df.set_index('id', inplace=True, drop=False) # 索引设为id列值,默认会删除id列,
      
    2. 使用index提升查询性能

      哈希表、二分查找、扫描

    3. 使用index能自动对齐数据

      s1+s2

    4. 更多更强大的数据结构支持

  12. Pandas的Merge语法
    1. 电影数据集的join实例

      把相同key的俩表合并join起来

      df_ratings_users = pd.merge(
          df_ratings, df_users, left_on="UserID", right_on="UserID", how="inner"
      )
      
    2. 理解merge时一对一、一对多、多对多的数量对齐关系

      一对多、多对多(列数不变),会有复制m*n

    3. left\right\inner\outer join的区别

      1. inner join

        左边和右边都有的key,才出现在结果

      2. outer

        左右和右边都会出现,不匹配则Null

      3. left

        左边的都会出现在结果,右边无法匹配则Null

      4. right

        右边都有

    4. 出现非key字段重名

      会自动加上后缀,参数suffixes=(‘zuo’, ‘you’)

  13. Pandas的Concat、append

    批量合并相同格式的excel、给DataFrame添加行(append)、列(merge)

    语法:使用某种合并方式(inner、outer),沿着某方向(axis=0/1),把多个pandas对象合并

    pd.concat([df1, df2], axis=0, join=outer, ignore_index=False)	# 这里是默认参数
    
  14. Pandas批量拆分与合并Excel文件

    通过dataframe中转~~,怎么写~

  15. 待更新,2021年11月21日21点48分

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值