10分钟了解pandas¶
这是一篇主要面向于新用户的关于pandas的简短介绍。 你可以在 Cookbook 中看到更为复杂的指导。
通常地,我们用下面这种方式导入库:
In [1]: import numpy as np
In [2]: import pandas as pd
创建对象¶
详见 数据结构介绍 。
用传一列表值的方式创建一个 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.648752 0.593078 -1.295593 0.041149
2013-01-02 1.225795 0.465408 0.600501 -0.281432
2013-01-03 -0.159979 0.749984 -1.778119 0.206457
2013-01-04 0.316474 0.932746 -0.882793 1.218417
2013-01-05 0.575033 -0.867022 0.441981 -1.177396
2013-01-06 1.154718 -2.284083 0.936261 0.438507
用传可以被转换为序列的对象的列表的方式来构建 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
的每一列具有不同的 dtypes 。
In [11]: df2.dtypes
Out[11]:
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
当你在使用IPython时列名(也是对象的公有属性)的自动补全会被自动打开:
In [12]: df2.<TAB> # noqa: E225, E999
df2.A df2.bool
df2.abs df2.boxplot
df2.add df2.C
df2.add_prefix df2.clip
df2.add_suffix df2.clip_lower
df2.align df2.clip_upper
df2.all df2.columns
df2.any df2.combine
df2.append df2.combine_first
df2.apply df2.compound
df2.applymap df2.consolidate
df2.D
如您所见,A
、 B
、 C
和 D
都被收进了自动补全。
而 E
也同样在其中,简短起见我们把其他的属性截去了。
查看数据¶
详见 基础 。
这里展示如何查看一个数据框最顶端和最底端的几行数据:
In [13]: df.head()
Out[13]:
A B C D
2013-01-01 0.648752 0.593078 -1.295593 0.041149
2013-01-02 1.225795 0.465408 0.600501 -0.281432
2013-01-03 -0.159979 0.749984 -1.778119 0.206457
2013-01-04 0.316474 0.932746 -0.882793 1.218417
2013-01-05 0.575033 -0.867022 0.441981 -1.177396
In [14]: df.tail(3)