pandas是在数据处理、数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门。劳动节必须得劳动劳动web
如下代码在jupyter
中运行,Python 版本3.6。首先导入 pandassql
import pandas as pd
# 为了能在jupyter中展现图表 %matplotlib inline 复制代码
# 从csv文件读取数据,也可从excel、json文件中读取
# 也能够经过sql从数据库读数据
data = pd.read_csv('order_list.csv')
复制代码
# 输出几行几列
data.shape
output: (1000, 3) 复制代码
能够看到,变量 data 是一个二维表,有1000行,3列。pandas中这种数据类型被称做 DataFrame。数据库
# 查看数据描述
data.describe()
复制代码
data 中有3列,good_id、good_cnt 和 order_id 分别表明商品id、购买该商品数量和订单id。最左侧是
describe
函数统计的指标,包括每一列的数量、均值、标准差、最大值、最小值等等。json
# 预览数据,条数可设
data.head(3)
复制代码
# 获取第2行数据
data.loc[2]
output: good_id 100042 good_cnt 1 order_id 10000002 Name: 2, dtype: int64 复制代码
# 获取多行数据,数组元素表明行号
data.loc[[1, 2]]
复制代码
# 获取商品id=100012的全部记录
data[data['good_id']==100012]
复制代码
# 获取商品id=100012且每笔订单销量=6的全部记录
data[(data['good_id']==100087) & (data['good_cnt']==6)]
复制代码
# 获取订单号在[10000000, 10000042]中的记录
data[data['order_id'].isin([10000000, 10000042])]
复制代码
# 画100012商品,每笔订单销量折线图
data[data['good_id']==100012]['good_cnt'].plot()
复制代码
# 画100012商品,销量柱状图
data[data['good_id']==100012]['good_cnt'].hist()
复制代码
# 更新数据,将第1行的good_cnt列改成10
data.loc[1, 'good_cnt'] = 10
data.head(3)
复制代码
# 将100012商品每笔订单销量都改成20
data.loc[data['good_id']==100012, 'good_cnt'] = 20
data.head(3)
复制代码
# 统计每种商品出现次数
# 即:每种商品的下单次数
data['good_id'].value_counts()
output:
100080 18
100010 16
100073 16
100097 15
100096 15
..
100079 5
100077 5
100007 4
100037 4
100033 4
Name: good_id, Length: 100, dtype: int64
复制代码
# 取出商品销量列,该列中每一个值都加1
data['good_cnt'].map(lambda x: x+1)
output:
0 21
1 11
2 2
3 4
4 10
..
995 8
996 9
997 6
998 5
999 9
Name: good_cnt, Length: 1000, dtype: int64
复制代码
这里,map
并不改变原有的 data 中的数据,而是返回新的对象。数组
# 对数据集每列调用给定的函数
data.apply(len)
复制代码
这里是对每列执行len
函数,固然apply
中的len
函数也能够换成自定义的 lambda 表达式。另外,若是想按行作处理,则在调用apply
函数时加上axis=1
参数便可。app
# 对数据集中全部元素调用给定函数
# 一样不改变原有数据集
data.applymap(lambda x: x*100)
复制代码
# 计算每列之间的相关系数
data.corr()
复制代码
# 画出相关系数矩阵
pd.plotting.scatter_matrix(data, figsize=(12,8))
复制代码
以左小角为例,它表示商品id(good_id)和订单id(order_id)之间的相关性。因为点比较分散,没有任何规律,所以能够说明这两列在数据值上没有相关性,这也好理解,由于原本它俩就是不一样的概念。机器学习
相关系数矩阵通常用于机器学习中观察不一样特征之间的相关性。编辑器
# 构造DateFrame,表明订单发生的城市
order_city_df = pd.DataFrame(\
dict(order_id=[10000000, 10000001], \
city=['上海', '北京'])\
)
# 实现join data.merge(order_city_df, on=['order_id']) 复制代码
# 统计每一个商品的总销量
data.groupby('good_id')['good_cnt'].sum().reset_index()
复制代码
dictionary = {}
for i,row in data.iterrows(): dictionary[row['good_id']] = row['good_cnt'] 复制代码
pandas的入门就介绍到这里,但愿能对你有帮助。对于想继续深刻的朋友能够参考pandas官方文档,中英文都有。另外,咱们使用pandas通常都是单机来处理,若是数据量比较大,单机运行起来会比较慢。这时候你可能会用到另一个工具叫 Dask,它的接口兼容 pandas,能够与pandas相互转换,而且能够运行在集群上分布式处理数据。分布式
如需完整代码,在公众号回复关键字 pd 便可函数
欢迎公众号「渡码」,输出别地儿看不到的干货。