pandas从入门到上楼

关键时刻,第一时间送达!

作者: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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180902B14XAL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券