快速入门pandas扩展库

  1. 导入 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扩展库(上)相关推荐

  1. python3 爬虫实例_【实战练习】Python3网络爬虫快速入门实战解析(上)

    原标题:[实战练习]Python3网络爬虫快速入门实战解析(上) 摘要 使用python3学习网络爬虫,快速入门静态网站爬取和动态网站爬取 [ 前言 ] 强烈建议:请在电脑的陪同下,阅读本文.本文以实 ...

  2. c#快速入门~在java基础上,知道C#和JAVA 的不同即可

    ☺ 观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C#,当然不是说学C#的前提是需要java,而是下文是从主语言是java的情 ...

  3. Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换

    Python扩展库pandas的DataFrame对象的pivot()方法可以对数据进行行列互换,或者进行透视转换,在有些场合下分析数据时非常方便. DataFrame对象的pivot()方法可以接收 ...

  4. 公告:csdn学院《小白快速入门系列》线上课程,全部一折,最高6元!

    线上课程做下活动,csdn学院的,小白快速入门系列,全部一折,最高6元,有需要的可以看下,没需要就算了,欢迎关注与交流! 1.小白快速入门Spring Cloud Alibaba 链接:https:/ ...

  5. micropython stm32f030_STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单

    1.从 GPIO 到 UART 前面几节我们讲了MCU如何启动,如何用翻转IO引脚,以及用按键去触发中断.接下来我们介绍的也是最常用的一个模块,串口(UART). 串口可以说是最古老,而且生命力最强的 ...

  6. 三阶矩阵的lu分解详细步骤_快速入门矩阵运算——开源库Eigen

    矩阵是数学中一个重要的工具,广泛应用于各种场景下的数值分析,例如,数字信号处理,图像处理等.我们如何在程序中使用矩阵进行运算呢?本文将为大家介绍一个开源的矩阵运算工具--Eigen. Eigen is ...

  7. eigen 列向量转矩阵_快速入门矩阵运算——开源库Eigen

    矩阵是数学中一个重要的工具,广泛应用于各种场景下的数值分析,例如,数字信号处理,图像处理等.我们如何在程序中使用矩阵进行运算呢?本文将为大家介绍一个开源的矩阵运算工具--Eigen. Eigen is ...

  8. 3DMAX快速入门 界面介绍【上】

    对3D软件感兴趣的你在打开3Dmax的那一刻,有没有傻眼?密密麻麻的格子让人看得眼花缭乱,为了避免你一打开就把软件关掉,从此就关上了3d这一款赚钱软件的窗户. 小锤就来和你介绍一下3dmax,让你对于 ...

  9. Linux快速入门之 静态库和动态库 (07)

    文章目录 7.静态库和动态库 7.1 Linux下静态库 7.1.1生成静态库 7.1.2静态库使用 7.2 Linux下动态库 7.2.1 生成动态库 7.2.2 制作动态库 7.2.3 动态库的使 ...

最新文章

  1. 看动画轻松理解“递归”与“动态规划”
  2. 系统高可用设计与实践
  3. 纯CSS实现文字一行居中,多行左对齐的方法
  4. Kibana——数据图形化制作
  5. python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...
  6. HDU1525 Euclid's Game 【欧几里得博弈】
  7. competitor product could not be downloaded
  8. python扫描器甄别操作系统类型_20189317 《网络攻防技术》 第三周作业
  9. VS生成的exe文件如何在其他电脑上运行
  10. python中的date的含义_python中date、datetime、string的相互转换
  11. ios 裁剪圆形头像_IOS_iOS如何裁剪圆形头像,本文实例为大家介绍了iOS裁剪 - phpStudy...
  12. [zz]如何使用effect
  13. 目前服务器cpu主流参数,服务器CPU天梯图-包含所有主流设备及服务器处理器
  14. polyval matlab 怎么用,matlab 中polyval的用法 最好能举个例子
  15. allegro元器件对齐
  16. 以图搜图(基于 Milvus 和 VGG 实现以图搜图)
  17. 微信小视频显示服务器正在升级,更新微信版本后 朋友圈小视频提示显示录制时间太短的解决办法...
  18. C语言数组制作拼图游戏,C语言自制拼图游戏.doc
  19. 从美团实习生到上市公司CEO,沈鹏的自我训练心法
  20. Symbian数据库

热门文章

  1. Linux 环境下部署Hexagon SDK 开发环境
  2. 外贸网站如何合理搭配色彩——摘自外贸宝-外贸网站建设
  3. Spark:java.net.URISyntaxException: Relative path in absolute URI: file:D:/XXX/SparkFaultBench/spark-
  4. 【小白向C语言】从一到n的累加(大数版)学习笔记
  5. Richard Stallman
  6. 使用Python进行压缩与解压缩
  7. 机械和计算机分数线,东北大学通信,冶金,计算机,材料,机械历年分数线
  8. Video标签播放视频(动态视频URL)
  9. webservice 常用接口
  10. 上海消费者购房意愿增强 楼市调控满意度提高