关键时刻,第一时间送达!
作者:youerning
http://blog.51cto.com/youerning/2156335
程序员共读整理发布,转载请联系作者获得授权
数据对象
pandas主要有两种数据对象
Series
DataFrame
注: 后面代码使用pandas版本0.20.1,通过import pandas as pd引入
Series
Series是一种带有索引的序列对象
创建方式
简单创建如下
DataFrame
类似与数据库table有行列的数据对象
创建方式如下
索引
不管是Series对象还是DataFrame对象都有一个对对象相对应的索引, Series的索引类似于每个元素, DataFrame的索引对应着每一行
查看
在创建对象的时候,每个对象都会初始化一个起始值为0,自增的索引列表, DataFrame同理
增删查改
这里的增删查改主要基于DataFrame对象
为了有足够数据用于展示,这里选择tushare的数据
tushare安装
创建数据对象如下
DataFrame 行列,axis 图解
查询
查看每列的数据类型
查看指定指定数量的行
查看某一行或多行,某一列或多列
使用行列组合条件查询
通过==位置==查询
值得注意的是上面的索引值就是特定的位置
通过条件筛选
增加
在前面已经简单的说明Series, DataFrame的创建,这里说一些常用有用的创建方式
修改
删除
通过drop方法drop指定的行或者列
注意: drop方法并不直接修改源数据,如果需要使源dataframe对象被修改,需要传入inplace=True
通过之前的axis图解,知道行的值(或者说label)在axis=0,列的值(或者说label)在axis=1
pandas常用参数
数值显示格式
当数值很大的时候pandas默认会使用科学计数法
常用函数
统计
缺失值处理
删除或者填充缺失值
排序
按行或者列排序, 默认也不修改源数据
安装某一列的值排序
合并
concat, 按照行方向或者列方向合并
追加行, 相应的还有insert, 插入插入到指定位置
对象复制
由于dataframe是引用对象,所以需要显示调用copy方法用以复制整个dataframe对象
绘图
pandas的绘图是使用matplotlib,如果想要画的更细致, 可以使用matplotplib,不过简单的画一些图还是不错的
因为上图太麻烦,这里就不配图了,可以在资源文件里面查看pandas-blog.ipynb文件或者自己敲一遍代码。
数据读写
读写常见文件格式,如csv,excel,json等, 甚至是读取==系统的剪切板==.这个功能有时候很有用。直接将鼠标选中复制的内容读取创建dataframe对象。
简单实例
这里以处理web日志为例,也许不太实用 ,因为ELK处理这些绰绰有余,不过喜欢什么自己来也未尝不可
分析access.log
日志文件: https://raw.githubusercontent.com/Apache-Labor/labor/master/labor-04/labor-04-example-access.log
日志格式及示例
读取并解析日志文件
解析日志文件
将数据注入DataFrame对象
查看数据类型
由上可知, 除了Time字段是时间类型,其他都是object,但是Size, Status应该为数字
统计status数据
绘制pie图
查看日志文件时间跨度
分别查看起始,终止时间
按照此方法还可以统计Method, User_Agent字段 ,不过User_Agent还需要额外清洗以下数据
统计top 10 IP地址
绘制请求走势图
分别绘图
参考链接
https://pandas.pydata.org/pandas-docs/stable/index.html
源代码等资源文件
https://github.com/youerning/blog/tree/master/pandas
领取 专属20元代金券
Get大咖技术交流圈