文档章节

5分钟入门pandas

o
 osc_kf7nv2km
发布于 05/07 12:08
字数 1110
阅读 21
收藏 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]
复制代码
# 获取商品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)
复制代码

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()
复制代码
# 画出相关系数矩阵
pd.plotting.scatter_matrix(data, figsize=(12,8))
复制代码

以左小角为例,它表示商品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'])
复制代码

实现SQL group by操作

# 统计每个商品的总销量
data.groupby('good_id')['good_cnt'].sum().reset_index()
复制代码

遍历 DataFrame 中每行数据

dictionary = {}

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

pandas的入门就介绍到这里,希望能对你有帮助。对于想继续深入的朋友可以参考pandas官方文档,中英文都有。另外,我们使用pandas一般都是单机来处理,如果数据量比较大,单机运行起来会比较慢。这时候你可能会用到另外一个工具叫 Dask,它的接口兼容 pandas,可以与pandas相互转换,并且可以运行在集群上分布式处理数据。

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

欢迎公众号「渡码」,输出别地儿看不到的干货。

o
粉丝 0
博文 79
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
4.2K
3
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
7
Python数据分析工具包--Pandas

Python Data Analysis Library 或 pandas 是连接 SciPy 和 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集...

匿名
2012/10/30
2.1W
2
卷积神经网络初探

前言 目前为止我已经完整地学完了三个机器学习教程:包括“Stanford CS229”,"Machine Learning on Coursrea" 和 "Stanford UFLDL",卷积神经网络是其中最抽象的概念。 维基百科对卷积的数学...

Lee的白板报
2015/12/24
8.4K
14
J360-cloud SpringCloud系列一:分布式配置服务器ConfigServer

j360开源博客之 ---------------------------------------------------------- J360-Cloud系列 spring-cloud快速入门工程之j360-cloud-all:(欢迎star、fork) https://github.com/xuminwl......

Hi徐敏
2015/10/08
4K
14

没有更多内容

加载失败,请刷新页面

加载更多

这是对我最大的认可和鼓励

这是程序员cxuan的第18篇原创分享 可能一些小伙伴们不太清楚是怎么回事,是这样的。 我最近肝了三本 PDF,分别是 《Java核心技术总结》、《HTTP核心总结》、《程序员必知的硬核知识》、目录如...

osc_nc5ghpm9
刚刚
0
0
折叠屏丨华为专家深度解读折叠屏连续性和拖拽适配介绍

折叠屏手机的出现,满足了用户对大屏幕的追求,但卓越的用户体验更离不开应用的适配与功能创新。距离Mate X面世已经一年的时间,应用适配情况如何?在适配过程中有哪些经验可以参考?有没有常...

软件绿色联盟
今天
0
0
一个 static 还能难得住我?

这是程序员cxuan的第15期原创分享 static 是我们日常生活中经常用到的关键字,也是 Java 中非常重要的一个关键字,static 可以修饰变量、方法、做静态代码块、静态导包等,下面我们就来具体聊...

osc_p23q7y3z
2分钟前
0
0
高中生写LOL外挂1年狂赚500万,落网前刚买下120万保时捷...

点击“开发者技术前线”,选择“星标🔝” 在看|星标|留言, 真爱 来源:交汇点| 编辑:可可 2020年3月,泰州姜堰警方接到一起特殊的报警:一名游戏玩家向民警反映,自己在玩英雄联盟对战时输...

开发者技术前线
今天
0
0
一次简单的服务器 cpu 占用率高的快速排查实战

前两天,朋友遇到一个线上 cpu 占用率很高的问题,我们俩一起快速定位并解决了这个问题。在征求朋友同意后,特发此文分享整个过程。本文以对话的形式展开,加上我的内心独白。文中对话与实际...

osc_emo7t12i
3分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部