博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pandas - 快速入门
阅读量:6785 次
发布时间:2019-06-26

本文共 8091 字,大约阅读时间需要 26 分钟。

hot3.png

参考: 

首先, 我们导入包

import pandas as pdimport numpy as npimport matplotlib.pyplot as plt

对象创建

通过一个数组创建一个Series

In [4]: s = pd.Series([1,3,5,np.nan,6,8])In [5]: sOut[5]: 0    1.01    3.02    5.03    NaN4    6.05    8.0dtype: float64

通过NumPy 数组, 创建DataFrame

In [6]: dates = pd.date_range('20130101', periods=6)In [7]: datesOut[7]: 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 [8]: df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))In [9]: dfOut[9]:                    A         B         C         D2013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.0718042013-01-04  0.721555 -0.706771 -1.039575  0.2718602013-01-05 -0.424972  0.567020  0.276232 -1.0874012013-01-06 -0.673690  0.113648 -1.478427  0.524988

通过字典创建DataFrame

In [10]: 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 [11]: df2Out[11]:      A          B    C  D      E    F0  1.0 2013-01-02  1.0  3   test  foo1  1.0 2013-01-02  1.0  3  train  foo2  1.0 2013-01-02  1.0  3   test  foo3  1.0 2013-01-02  1.0  3  train  foo

获得各列数据类型

In [12]: df2.dtypesOut[12]: A           float64B    datetime64[ns]C           float32D             int32E          categoryF            objectdtype: object

观察数据

查看数据的开头和结尾

In [14]: df.head()Out[14]:                    A         B         C         D2013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.0718042013-01-04  0.721555 -0.706771 -1.039575  0.2718602013-01-05 -0.424972  0.567020  0.276232 -1.087401In [15]: df.tail(3)Out[15]:                    A         B         C         D2013-01-04  0.721555 -0.706771 -1.039575  0.2718602013-01-05 -0.424972  0.567020  0.276232 -1.0874012013-01-06 -0.673690  0.113648 -1.478427  0.524988

显示index, cloumns 和数据

In [16]: df.indexOut[16]: 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 [17]: df.columnsOut[17]: Index(['A', 'B', 'C', 'D'], dtype='object')In [18]: df.valuesOut[18]: 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 ]])

describe()  函数

In [19]: df.describe()Out[19]:               A         B         C         Dcount  6.000000  6.000000  6.000000  6.000000mean   0.073711 -0.431125 -0.687758 -0.233103std    0.843157  0.922818  0.779887  0.973118min   -0.861849 -2.104569 -1.509059 -1.13563225%   -0.611510 -0.600794 -1.368714 -1.07661050%    0.022070 -0.228039 -0.767252 -0.38618875%    0.658444  0.041933 -0.034326  0.461706max    1.212112  0.567020  0.276232  1.071804

转置你的数据

In [20]: df.TOut[20]:    2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06A    0.469112    1.212112   -0.861849    0.721555   -0.424972   -0.673690B   -0.282863   -0.173215   -2.104569   -0.706771    0.567020    0.113648C   -1.509059    0.119209   -0.494929   -1.039575    0.276232   -1.478427D   -1.135632   -1.044236    1.071804    0.271860   -1.087401    0.524988

排序(index)

In [14]: df.head()Out[14]:                    A         B         C         D2013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.0718042013-01-04  0.721555 -0.706771 -1.039575  0.2718602013-01-05 -0.424972  0.567020  0.276232 -1.087401In [21]: df.sort_index(axis=1, ascending=False)Out[21]:                    D         C         B         A2013-01-01 -1.135632 -1.509059 -0.282863  0.4691122013-01-02 -1.044236  0.119209 -0.173215  1.2121122013-01-03  1.071804 -0.494929 -2.104569 -0.8618492013-01-04  0.271860 -1.039575 -0.706771  0.7215552013-01-05 -1.087401  0.276232  0.567020 -0.4249722013-01-06  0.524988 -1.478427  0.113648 -0.673690

排序(列)

In [22]: df.sort_values(by='B')Out[22]:                    A         B         C         D2013-01-03 -0.861849 -2.104569 -0.494929  1.0718042013-01-04  0.721555 -0.706771 -1.039575  0.2718602013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-06 -0.673690  0.113648 -1.478427  0.5249882013-01-05 -0.424972  0.567020  0.276232 -1.087401

选择

选择一列

In [23]: df['A']Out[23]: 2013-01-01    0.4691122013-01-02    1.2121122013-01-03   -0.8618492013-01-04    0.7215552013-01-05   -0.4249722013-01-06   -0.673690Freq: D, Name: A, dtype: float64

通过[]选择

In [24]: df[0:3]Out[24]:                    A         B         C         D2013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.071804In [25]: df['20130102':'20130104']Out[25]:                    A         B         C         D2013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.0718042013-01-04  0.721555 -0.706771 -1.039575  0.271860

通过标签(label)选择

In [6]: dates = pd.date_range('20130101', periods=6)In [7]: datesOut[7]: 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 [26]: df.loc[dates[0]]Out[26]: A    0.469112B   -0.282863C   -1.509059D   -1.135632Name: 2013-01-01 00:00:00, dtype: float64

通过标签选择多列

In [27]: df.loc[:,['A','B']]Out[27]:                    A         B2013-01-01  0.469112 -0.2828632013-01-02  1.212112 -0.1732152013-01-03 -0.861849 -2.1045692013-01-04  0.721555 -0.7067712013-01-05 -0.424972  0.5670202013-01-06 -0.673690  0.113648

选择多行多列

In [28]: df.loc['20130102':'20130104',['A','B']]Out[28]:                    A         B2013-01-02  1.212112 -0.1732152013-01-03 -0.861849 -2.1045692013-01-04  0.721555 -0.706771

获取标量值

In [30]: df.loc[dates[0],'A']Out[30]: 0.46911229990718628

更高效的方式获取标量值

In [31]: df.at[dates[0],'A']Out[31]: 0.46911229990718628

通过整数的位置信息访问

In [32]: df.iloc[3]Out[32]: A    0.721555B   -0.706771C   -1.039575D    0.271860Name: 2013-01-04 00:00:00, dtype: float64In [33]: df.iloc[3:5,0:2]Out[33]:                    A         B2013-01-04  0.721555 -0.7067712013-01-05 -0.424972  0.567020In [34]: df.iloc[[1,2,4],[0,2]]Out[34]:                    A         C2013-01-02  1.212112  0.1192092013-01-03 -0.861849 -0.4949292013-01-05 -0.424972  0.276232In [35]: df.iloc[1:3,:]Out[35]:                    A         B         C         D2013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-03 -0.861849 -2.104569 -0.494929  1.071804In [36]: df.iloc[:,1:3]Out[36]:                    B         C2013-01-01 -0.282863 -1.5090592013-01-02 -0.173215  0.1192092013-01-03 -2.104569 -0.4949292013-01-04 -0.706771 -1.0395752013-01-05  0.567020  0.2762322013-01-06  0.113648 -1.478427In [37]: df.iloc[1,1]Out[37]: -0.17321464905330858

更高效的方式访问标量

In [38]: df.iat[1,1]Out[38]: -0.17321464905330858

通过条件判断选择数据

In [39]: df[df.A > 0]Out[39]:                    A         B         C         D2013-01-01  0.469112 -0.282863 -1.509059 -1.1356322013-01-02  1.212112 -0.173215  0.119209 -1.0442362013-01-04  0.721555 -0.706771 -1.039575  0.271860In [40]: df[df > 0]Out[40]:                    A         B         C         D2013-01-01  0.469112       NaN       NaN       NaN2013-01-02  1.212112       NaN  0.119209       NaN2013-01-03       NaN       NaN       NaN  1.0718042013-01-04  0.721555       NaN       NaN  0.2718602013-01-05       NaN  0.567020  0.276232       NaN2013-01-06       NaN  0.113648       NaN  0.524988

转自:

转载于:https://my.oschina.net/cttmayi/blog/1818984

你可能感兴趣的文章
linux下find命令的使用
查看>>
除了FTP备份之外 你该试一试多备份
查看>>
CCNA学习笔记之Dynamips使用
查看>>
JavaScript 基础语法总结
查看>>
MySQL 主从复制与读写分离概念及实践
查看>>
我的友情链接
查看>>
【JAVA】字符串去空格
查看>>
CentOS操作系统中HTTP服务安装
查看>>
JBPM6教程-10分钟玩转JBPM工作台
查看>>
JS:证件检查类
查看>>
Nginx和Tomcat的管理脚本
查看>>
一种基于主客体模型的权限管理框架
查看>>
为什么我写的page页面无法渲染
查看>>
Impala/Hive现状分析与前景展望
查看>>
PHP读取PDF内容配合Xpdf的使用
查看>>
【Linux 驱动】设备驱动程序再理解
查看>>
加密解密的概念以及DES加密算法的实现
查看>>
yum 出现错误
查看>>
Nagios(十)—— 监控路由器
查看>>
禁止ping主机
查看>>