快速入门pandas扩展库(上)
快速入门pandas扩展库
- 导入 Pandas 与 NumPy:
In [1]: import numpy as np
In [2]: import pandas as pd
2.生成对象
用值列表生成 Series 时,Pandas 默认自动生成整数索引
In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8])
In [4]: s
Out[4]:
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
用含日期时间索引与标签的 NumPy 数组生成 DataFrame:
In [5]: dates = pd.date_range('20130101', periods=6)
In [6]: dates
Out[6]:
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'],dtype='datetime64[ns]', freq='D')
In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates,
columns=list('ABCD'))
In [8]: df
Out[8]: A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
2013-01-06 -0.673690 0.113648 -1.478427 0.524988
用 Series 字典对象生成 DataFrame:
In [9]: df2 = pd.DataFrame({'A': 1.,...: 'B': pd.Timestamp('20130102'),...: 'C': pd.Series(1, index=list(range(4)),
dtype='float32'),...: 'D': np.array([3] * 4, dtype='int32'),...: 'E': pd.Categorical(["test", "train", "test",
"train"]),...: 'F': 'foo'})...:
In [10]: df2
Out[10]:A B C D E F
0 1.0 2013-01-02 1.0 3 test foo
1 1.0 2013-01-02 1.0 3 train foo
2 1.0 2013-01-02 1.0 3 test foo
3 1.0 2013-01-02 1.0 3 train foo
DataFrame 的列有不同数据类型:
In [11]: df2.dtypes
Out[11]:
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
3.查看数据
下列代码说明如何查看 DataFrame 头部和尾部数据:
In [13]: df.head()
Out[13]:A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
In [14]: df.tail(3)
Out[14]:A B C D
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
2013-01-06 -0.673690 0.113648 -1.478427 0.524988
显示索引与列名:
In [15]: df.index
Out[15]:
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04','2013-01-05', '2013-01-06'],dtype='datetime64[ns]', freq='D')
In [16]: df.columns
Out[16]: Index(['A', 'B', 'C', 'D'], dtype='object')
DataFrame.to_numpy() 输出底层数据的 NumPy 对象。注意,DataFrame 的列由多种数据类型组成时,该操作
耗费系统资源较大,这也是 Pandas 和 NumPy 的本质区别:NumPy 数组只有一种数据类型,DataFrame 每列
的数据类型各不相同。调用 DataFrame.to_numpy() 时,Pandas 查找支持 DataFrame 里所有数据类型的
NumPy 数据类型。还有一种数据类型是 object,可以把 DataFrame 列里的值强制转换为 Python 对象。
下面的 df 这个 DataFrame 里的值都是浮点数,DataFrame.to_numpy() 的操作会很快,而且不复制数据。
In [17]: df.to_numpy()
Out[17]:
array([[ 0.4691, -0.2829, -1.5091, -1.1356],[ 1.2121, -0.1732, 0.1192, -1.0442],[-0.8618, -2.1046, -0.4949, 1.0718],[ 0.7216, -0.7068, -1.0396, 0.2719],[-0.425 , 0.567 , 0.2762, -1.0874],[-0.6737, 0.1136, -1.4784, 0.525 ]])
df2 这个 DataFrame 包含了多种类型,DataFrame.to_numpy() 操作就会耗费较多资源。
In [18]: df2.to_numpy()
Out[18]:
array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']],
dtype=object)
DataFrame.to_numpy() 的输出不包含行索引和列标签。
describe() 可以快速查看数据的统计摘要:`
In [19]: df.describe()
Out[19]:A B C D
count 6.000000 6.000000 6.000000 6.000000
mean 0.073711 -0.431125 -0.687758 -0.233103
std 0.843157 0.922818 0.779887 0.973118
min -0.861849 -2.104569 -1.509059 -1.135632
25% -0.611510 -0.600794 -1.368714 -1.076610
50% 0.022070 -0.228039 -0.767252 -0.386188
75% 0.658444 0.041933 -0.034326 0.461706
max 1.212112 0.567020 0.276232 1.071804
转置数据:
In [20]: df.T
Out[20]:2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06
A 0.469112 1.212112 -0.861849 0.721555 -0.424972 -0.673690
B -0.282863 -0.173215 -2.104569 -0.706771 0.567020 0.113648
C -1.509059 0.119209 -0.494929 -1.039575 0.276232 -1.478427
D -1.135632 -1.044236 1.071804 0.271860 -1.087401 0.524988
按轴排序:
In [21]: df.sort_index(axis=1, ascending=False)
Out[21]:D C B A
2013-01-01 -1.135632 -1.509059 -0.282863 0.469112
2013-01-02 -1.044236 0.119209 -0.173215 1.212112
2013-01-03 1.071804 -0.494929 -2.104569 -0.861849
2013-01-04 0.271860 -1.039575 -0.706771 0.721555
2013-01-05 -1.087401 0.276232 0.567020 -0.424972
2013-01-06 0.524988 -1.478427 0.113648 -0.673690
按值排序:
In [22]: df.sort_values(by='B')
Out[22]:A B C D
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-06 -0.673690 0.113648 -1.478427 0.524988
2013-01-05 -0.424972 0.567020 0.276232 -1.087401
4.选择
选择、设置标准 Python / Numpy 的表达式已经非常直观,交互也很方便,但对于生产代码,我们还是
推荐优化过的 Pandas 数据访问方法:.at、.iat、.loc 和 .iloc。
获取数据
选择单列,产生 Series,与 df.A 等效:
In [23]: df['A']
Out[23]:
2013-01-01 0.469112
2013-01-02 1.212112
2013-01-03 -0.861849
2013-01-04 0.721555
2013-01-05 -0.424972
2013-01-06 -0.673690
Freq: D, Name: A, dtype: float64
切片行:
In [24]: df[0:3]
Out[24]:A B C D
2013-01-01 0.469112 -0.282863 -1.509059 -1.135632
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
In [25]: df['20130102':'20130104']
Out[25]:A B C D
2013-01-02 1.212112 -0.173215 0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929 1.071804
2013-01-04 0.721555 -0.706771 -1.039575 0.271860
快速入门pandas扩展库(上)相关推荐
- python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)
原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...
- c#快速入门~在java基础上,知道C#和JAVA 的不同即可
☺ 观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C#,当然不是说学C#的前提是需要java,而是下文是从主语言是java的情 ...
- Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换
Python扩展库pandas的DataFrame对象的pivot()方法可以对数据进行行列互换,或者进行透视转换,在有些场合下分析数据时非常方便. DataFrame对象的pivot()方法可以接收 ...
- 公告:csdn学院《小白快速入门系列》线上课程,全部一折,最高6元!
线上课程做下活动,csdn学院的,小白快速入门系列,全部一折,最高6元,有需要的可以看下,没需要就算了,欢迎关注与交流! 1.小白快速入门Spring Cloud Alibaba 链接:https:/ ...
- micropython stm32f030_STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
1.从 GPIO 到 UART 前面几节我们讲了MCU如何启动,如何用翻转IO引脚,以及用按键去触发中断.接下来我们介绍的也是最常用的一个模块,串口(UART). 串口可以说是最古老,而且生命力最强的 ...
- 三阶矩阵的lu分解详细步骤_快速入门矩阵运算——开源库Eigen
矩阵是数学中一个重要的工具,广泛应用于各种场景下的数值分析,例如,数字信号处理,图像处理等.我们如何在程序中使用矩阵进行运算呢?本文将为大家介绍一个开源的矩阵运算工具--Eigen. Eigen is ...
- eigen 列向量转矩阵_快速入门矩阵运算——开源库Eigen
矩阵是数学中一个重要的工具,广泛应用于各种场景下的数值分析,例如,数字信号处理,图像处理等.我们如何在程序中使用矩阵进行运算呢?本文将为大家介绍一个开源的矩阵运算工具--Eigen. Eigen is ...
- 3DMAX快速入门 界面介绍【上】
对3D软件感兴趣的你在打开3Dmax的那一刻,有没有傻眼?密密麻麻的格子让人看得眼花缭乱,为了避免你一打开就把软件关掉,从此就关上了3d这一款赚钱软件的窗户. 小锤就来和你介绍一下3dmax,让你对于 ...
- Linux快速入门之 静态库和动态库 (07)
文章目录 7.静态库和动态库 7.1 Linux下静态库 7.1.1生成静态库 7.1.2静态库使用 7.2 Linux下动态库 7.2.1 生成动态库 7.2.2 制作动态库 7.2.3 动态库的使 ...
最新文章
- 看动画轻松理解“递归”与“动态规划”
- 系统高可用设计与实践
- 纯CSS实现文字一行居中,多行左对齐的方法
- Kibana——数据图形化制作
- python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...
- HDU1525 Euclid's Game 【欧几里得博弈】
- competitor product could not be downloaded
- python扫描器甄别操作系统类型_20189317 《网络攻防技术》 第三周作业
- VS生成的exe文件如何在其他电脑上运行
- python中的date的含义_python中date、datetime、string的相互转换
- ios 裁剪圆形头像_IOS_iOS如何裁剪圆形头像,本文实例为大家介绍了iOS裁剪 - phpStudy...
- [zz]如何使用effect
- 目前服务器cpu主流参数,服务器CPU天梯图-包含所有主流设备及服务器处理器
- polyval matlab 怎么用,matlab 中polyval的用法 最好能举个例子
- allegro元器件对齐
- 以图搜图(基于 Milvus 和 VGG 实现以图搜图)
- 微信小视频显示服务器正在升级,更新微信版本后 朋友圈小视频提示显示录制时间太短的解决办法...
- C语言数组制作拼图游戏,C语言自制拼图游戏.doc
- 从美团实习生到上市公司CEO,沈鹏的自我训练心法
- Symbian数据库
热门文章
- Linux 环境下部署Hexagon SDK 开发环境
- 外贸网站如何合理搭配色彩——摘自外贸宝-外贸网站建设
- Spark:java.net.URISyntaxException: Relative path in absolute URI: file:D:/XXX/SparkFaultBench/spark-
- 【小白向C语言】从一到n的累加(大数版)学习笔记
- Richard Stallman
- 使用Python进行压缩与解压缩
- 机械和计算机分数线,东北大学通信,冶金,计算机,材料,机械历年分数线
- Video标签播放视频(动态视频URL)
- webservice 常用接口
- 上海消费者购房意愿增强 楼市调控满意度提高