python 数据分析之pandas

给你一囗甜甜゛ 提交于 2020-02-26 15:53:07

pandas 是数据分析时必须用到的一个库,功能非常强大  

其有两种数据结构:一维Series   二维表DataFrame(一般读取后的数据都是df)

导入:import pandas as pd 

数据读取:pd.read_csv('d:/a.csv',dtype=objec,encoding='utf-8')

     pd.read_csv('d:/a.txt',dtype=objec,encoding='utf-8') 

                 pd.read_excel('d:/a.xls',dtype=objec,encoding='utf-8') 

                 dtype:指定数据读取后的类型     encoding:指定编码  jupyter默认为utf-8

数据输出:pd.to_excel(path)

一次写入多张表:利用ExcelWriter()方法

with pd.ExcelWriter(r'd:/test.xlsx',encoding='utf8') as writer:  #利用ExcelWriter()创建一个工作薄,并指定路径和名字 r表示后面的输入为长字符串,可以省略报错再加

  df1.to_excel(writer,sheet_name='sheet1')   #写入刚刚创建的工作薄并给工作表命名有几个表就写入几次

  df2.to_excel(writer,sheet_name='sheet2')

数据统计

pandas 做数据统计的时候有两种聚合方式:

1,groupby()分组

2,pivot_table()透视表

pandas 分析实例

 

 筛选出需要的字段并赋值给新的df,方法是df[['字段名','字段名']] 

注意需要加两个中括号

 

 选取某一列数据:有两种方法 df['字段名'] 或df.字段名

 

 选取符合要求的数据:类似高级筛选

  方法是字段加上条件判断:如df.分公司=='渝北'   df.时间>='2019-01-01'   如果多重判断可以使用& 或者 or 简化为:| 竖线 但是每个条件要()起来

  同一列的多重筛选方法:df.分公司.isin(['....','....'])

       模糊筛选方法:如不知道具体名称,只知道名称包含什么 可以说使用str.contains()方法

 

 

 

 

 

 

 

 一个特别实用的技巧:  

   在筛选条件之前加上“~”会得到相反得结果如:

 

 字符串文本提取

python提取文本非常方便——利用切片如:

提取日期的年份   ’2019-06-02‘[:4]

 

 提取月份:

 

 如果有不规则的数据需要文本提取,则找到相似的规律执行 比如日期都有 ’-‘,思路是通过find()函数找到其的位置,然后再切片提取。

 

 怎样将整列数据应用文本提取

  就是前面讲过的 apply() 方法

 

 这里定义了一个匿名函数lambda来实现,有关匿名函数请看以前的博客

分类统计

利用groupby()实现聚类  利用统计函数实现计算

常见的统计函数有:count(),sum(),mean()等

 

 指定统计某一列:

 

 筛选所需数据:如计数大于500

 

 对值进行排序:sort_values(ascending=False)  默认为True升序  False为降序

 

 对行进行筛选:利用df.loc['....']实现 loc 是pandas中对行进行操作

利用透视表pivot_table()进行分类统计

  pd.pivot_table(df,index=' ',columns=' ',values=' ',aggfunc=' ',margins= ,margins_name=' ',fill_value=)

      #df:数据源  index:分组字段   columns:列字段  values:计数对象字段  aggfunc:调用函数   margins:添加汇总  margins_name:赋值汇总名称  fill_value:填充空值

 

 

筛选方法和上面讲的一样

暂停一下,改天继续。

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!