首页 科技正文

齐齐哈尔市:5分钟入门pandas

admin 科技 2020-05-05 28 0

pandas是在数据处置、数据剖析以及数据可视化上都有对照多的应用,这篇文章就来先容一下pandas的入门。劳动节必须得劳动劳动

1. 基础用法

以下代码在jupyter中运行,Python 版本3.6。首先导入 pandas

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函数统计的指标,包罗每一列的数目、均值、标准差、最大值、最小值等等。

# 预览数据,条数可设
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]
齐齐哈尔市:5分钟入门pandas 第1张
# 获取商品id=100012且每笔订单销量=6的所有纪录 
data[(data['good_id']==100087) & (data['good_cnt']==6)]
齐齐哈尔市:5分钟入门pandas 第2张
# 获取订单号在[10000000, 10000042]中的纪录
data[data['order_id'].isin([10000000, 10000042])]
齐齐哈尔市:5分钟入门pandas 第3张
# 画100012商品,每笔订单销量折线图
data[data['good_id']==100012]['good_cnt'].plot()
齐齐哈尔市:5分钟入门pandas 第4张
# 画100012商品,销量柱状图
data[data['good_id']==100012]['good_cnt'].hist()
齐齐哈尔市:5分钟入门pandas 第5张
# 更新数据,将第1行的good_cnt列改为10
data.loc[1, 'good_cnt'] = 10
data.head(3)
齐齐哈尔市:5分钟入门pandas 第6张
# 将100012商品每笔订单销量都改为20
data.loc[data['good_id']==100012, 'good_cnt'] = 20
data.head(3)
齐齐哈尔市:5分钟入门pandas 第7张

2. 中级用法

# 统计每种商品泛起次数
# 即:每种商品的下单次数
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参数即可。

# 对数据集中所有元素挪用给定函数
# 同样不改变原有数据集
data.applymap(lambda x: x*100) 
# 盘算每列之间的相关系数
data.corr()
齐齐哈尔市:5分钟入门pandas 第8张
# 画出相关系数矩阵
pd.plotting.scatter_matrix(data, figsize=(12,8))

齐齐哈尔市:5分钟入门pandas 第9张 以左小角为例,它示意商品id(good_id)和订单id(order_id)之间的相关性。由于点对照涣散,没有任何纪律,因此可以说明这两列在数据值上没有相关性,这也好明白,由于原本它俩就是差别的观点。

相关系数矩阵一样平常用于机械学习中考察差别特征之间的相关性。

3. 高级用法

实现SQL join操作


# 组织DateFrame,代表订单发生的都会
order_city_df = pd.DataFrame(\
    dict(order_id=[10000000, 10000001], \
         city=['上海', '北京'])\
)

# 实现join
data.merge(order_city_df, on=['order_id'])
齐齐哈尔市:5分钟入门pandas 第10张

实现SQL group by操作

# 统计每个商品的总销量
data.groupby('good_id')['good_cnt'].sum().reset_index()
齐齐哈尔市:5分钟入门pandas 第11张

遍历 DataFrame 中每行数据

dictionary = {}

for i,row in data.iterrows():
  dictionary[row['good_id']] = row['good_cnt']

pandas的入门就先容到这里,希望能对你有辅助。对于想继续深入的同伙可以参考pandas官方文档,中英文都有。另外,我们使用pandas一样平常都是单机来处置,若是数据量对照大,单机运行起来会对照慢。这时候你可能会用到另外一个工具叫 Dask,它的接口兼容 pandas,可以与pandas相互转换,而且可以运行在集群上分布式处置数据。

如需完整代码,在民众号回复关键字 pd 即可

迎接民众号「渡码」,输出别地儿看不到的干货。
齐齐哈尔市:5分钟入门pandas 第12张

,

诚信在线手机版

诚信在线(现:阳光在线官网)现已开放诚信在线手机版、诚信在线电脑客户端下载。诚信在线娱乐游戏公平、公开、公正,用实力赢取信誉。

版权声明

本文仅代表作者观点,
不代表本站Allbet的立场。
本文系作者授权发表,未经许可,不得转载。

评论