Pandas 对象创建,本章介绍通过传入一些值的列表来创建一个Series
对象,通过传递带有日期时间索引和带标签列的NumPy数组来创建DataFrame
对象,通过传递可以转化为类似Series的dict对象来创建DataFrame
对象。
学习本章知识可以参考:请参阅 数据结构简介的部分。
通过传入一些值的列表来创建一个Series对象,Pandas会自动创建一个默认的整数索引,如下所示:
import numpy as np
import pandas as pd
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print (s)
执行结果如下:
通过传递带有日期时间索引和带标签列的NumPy数组来创建DataFrame对象,如下所示:
import numpy as np
import pandas as pd
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print (dates)
print(df)
执行结果如下:
通过传递可以转化为类似Series的dict对象来创建DataFrame
对象,如下所示:
import numpy as np
import pandas as pd
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'})
print(df2)
执行结果如下:
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的列具有不同的数据类型。
import numpy as np
import pandas as pd
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'})
print(df2.dtypes)
输出结果:
A float64
B datetime64[ns]
C float32
D int32
E category
F object
dtype: object
如果你正在使用 IPython, 按下tab键会自动补全所有的列名以及公共属性。下面是可以补全的属性中的一部分:
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也存在;为了简洁起见,只显示了一部分属性。