标签:相关 1.0 not 灵活 float pre add apple blog
pandas是一个强大的Python数据分析的工具包。
pandas是基于NumPy构建的。
pandas的主要功能
安装方法:pip install pandas
引用方法:import pandas as pd
Series:
是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等)。轴标签统称为索引。创建Series的基本方法是调用:
s = pd.Series(data, index=index)
data 可以是:
如果data
是ndarray,则索引必须与数据长度相同。如果没有传递索引,将创建值为[0, ..., len(data) - 1]
的索引。
In [125]: import pandas as pd In [126]: a = pd.Series([4,7,-5,3],index=[‘a‘,‘b‘,‘c‘,‘d‘]) In [127]: a Out[127]: a 4 b 7 c -5 d 3 dtype: int64 In [130]: b = pd.Series({‘a‘:1,‘b‘:2}) In [131]: b Out[131]: a 1 b 2 dtype: int64
获取值数组和索引数组:values属性和index属性
In [133]: a.values Out[133]: array([ 4, 7, -5, 3]) In [134]: a.index Out[134]: Index([‘a‘, ‘b‘, ‘c‘, ‘d‘], dtype=‘object‘)
Series特性:
In [140]: arr = np.array([1,2,3,4,5]) #必须是一维数组 In [141]: a = pd.Series(arr) In [142]: a Out[142]: 0 1 1 2 2 3 3 4 4 5 dtype: int64
In [142]: a Out[142]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 In [143]: a*2 Out[143]: 0 2 1 4 2 6 3 8 4 10 dtype: int64
In [145]: b Out[145]: a 4 b 7 c -5 d 3 e 0 dtype: int64 In [146]: a Out[146]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 In [147]: b+a Out[147]: a NaN b NaN c NaN d NaN e NaN 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN dtype: float64 In [150]: b = pd.Series(np.arange(5)) In [151]: a Out[151]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 In [152]: b Out[152]: 0 0 1 1 2 2 3 3 4 4 dtype: int64 In [153]: a+b Out[153]: 0 1 1 3 2 5 3 7 4 9 dtype: int64
In [157]: b Out[157]: a 4 b 7 c -5 d 3 e 0 dtype: int64 In [158]: b[0] Out[158]: 4 In [159]: b[‘a‘] Out[159]: 4
In [161]: b[1:3] Out[161]: b 7 c -5 dtype: int64 In [162]: b[‘b‘:‘d‘] Out[162]: b 7 c -5 d 3 dtype: int64 In [163]: b[‘b‘:‘c‘] Out[163]: b 7 c -5 dtype: int64
In [164]: b Out[164]: a 4 b 7 c -5 d 3 e 0 dtype: int64 In [165]: b[b>3] Out[165]: a 4 b 7 dtype: int64
In [169]: b Out[169]: a 4 b 7 c -5 d 3 e 0 dtype: int64 In [170]: b.mean() Out[170]: 1.8 In [171]: b.sum() Out[171]: 9 In [173]: b.cumsum(). #每个数字与这列之前的数据的和 Out[173]: a 4 b 11 c 6 d 9 e 9 dtype: int64
整数索引:
如果索引是整数类型,则根据整数进行数据操作时总是面向标签的。
In [178]: sr = pd.Series(np.arange(4.)) In [179]: sr Out[179]: 0 0.0 1 1.0 2 2.0 3 3.0 dtype: float64 In [185]: sr.iloc[0] Out[185]: 0.0 In [186]: sr.loc[0] Out[186]: 0.0
Series数据对齐
pandas在运算时,会按索引进行对齐然后计算。如果存在不同的索引,则结果的索引是两个操作数索引的并集。
In [189]: sr1 Out[189]: c 12 a 23 d 34 dtype: int64 In [190]: sr2 Out[190]: d 11 c 20 a 10 dtype: int64 In [191]: sr1+sr2 Out[191]: a 33 c 32 d 45 dtype: int64 In [192]: sr3 = pd.Series([11,20,10,14], index=[‘d‘,‘c‘,‘a‘,‘b‘]) In [193]: sr2+sr3 Out[193]: a 20.0 b NaN c 40.0 d 22.0 dtype: float64 In [194]: sr2.add(sr3,fill_value = 0) Out[194]: a 20.0 b 14.0 c 40.0 d 22.0 dtype: float64
DataFrame是一个表格型的数据结构,含有一组有序的列。
DataFrame可以被看做是由Series组成的字典,并且共用一个索引。
创建方式:
In [195]: df = pd.DataFrame({‘one‘:pd.Series([1,2,3],index=[‘a‘,‘b‘,‘c‘]), ‘two‘ ...: :pd.Series([1,2,3,4],index=[‘b‘,‘a‘,‘c‘,‘d‘])}) In [196]: df Out[196]: one two a 1.0 2 b 2.0 1 c 3.0 3 d NaN 4
csv文件读取与写入:
常用属性及方法:
In [213]: df Out[213]: one two a 1.0 2 b 2.0 1 c 3.0 3 d NaN 4 In [214]: df.index Out[214]: Index([‘a‘, ‘b‘, ‘c‘, ‘d‘], dtype=‘object‘) In [215]: df.columns Out[215]: Index([‘one‘, ‘two‘], dtype=‘object‘) In [216]: df.values Out[216]: array([[ 1., 2.], [ 2., 1.], [ 3., 3.], [ nan, 4.]])
索引和切片:
In [196]: df Out[196]: one two a 1.0 2 b 2.0 1 c 3.0 3 d NaN 4 In [197]: df[‘one‘] #只能是列名 Out[197]: a 1.0 b 2.0 c 3.0 d NaN Name: one, dtype: float64
In [221]: df Out[221]: one two a 1.0 2 b 2.0 1 c 3.0 3 d NaN 4 In [222]: df.loc[‘a‘,df.columns[1]] #行和列 Out[222]: 2
通过位置获取:
通过布尔值过滤:
In [237]: df[‘one‘].isin([1.0,3.0]) Out[237]: a True b False c True d False Name: one, dtype: bool
DataFrame数据对齐与缺失数据:
DataFrame处理缺失数据的方法:
In [261]: df Out[261]: one two 1 a 1.0 2.0 NaN b 2.0 1.0 1.0 c 3.0 3.0 NaN d NaN NaN NaN 3 1.0 1.0 1.0 In [262]: df.dropna() Out[262]: one two 1 b 2.0 1.0 1.0 3 1.0 1.0 1.0 In [263]: df.dropna(axis=1) Out[263]: Empty DataFrame Columns: [] Index: [a, b, c, d, 3]
In [223]: df Out[223]: one two a 1.0 2 b 2.0 1 c 3.0 3 d NaN 4 In [224]: df.fillna(11) Out[224]: one two a 1.0 2 b 2.0 1 c 3.0 3 d 11.0 4
pandas常用方法(适用Series和DataFrame):
层次化索引
从文件读取
时间对象处理(常作为索引):
时间序列就是以时间对象为索引的Series或DataFrame。
df = pd.read_csv(‘601318.csv‘,index_col=‘date‘,parse_dates=[‘date‘],)
In [266]: df
Out[266]:
Unnamed: 0 open close high low volume code
date
2007-03-01 0 22.074 20.657 22.503 20.220 1977633.51 601318
2007-03-02 1 20.750 20.489 20.944 20.256 425048.32 601318
2007-03-05 2 20.300 19.593 20.384 19.218 419196.74 601318
2007-03-06 3 19.426 19.977 20.308 19.315 297727.88 601318
2007-03-07 4 19.995 20.520 20.706 19.827 287463.78 601318
2007-03-08 5 20.353 20.273 20.454 20.167 130983.83 601318
2007-03-09 6 20.264 20.101 20.353 19.735 160887.79 601318
2007-03-12 7 19.999 19.739 19.999 19.646 145353.06 601318
2007-03-13 8 19.783 19.818 19.982 19.699 102319.68 601318
2007-03-14 9 19.558 19.841 19.911 19.333 173306.56 601318
2007-03-15 10 20.097 19.849 20.525 19.779 152521.90 601318
2007-03-16 11 19.863 19.960 20.286 19.602 227547.24 601318
2007-03-20 12 20.662 20.211 20.715 20.088 222026.87 601318
2007-03-21 13 20.220 19.911 20.308 19.823 136728.32 601318
2007-03-22 14 20.066 20.026 20.273 19.969 167509.84 601318
2007-03-23 15 20.017 19.938 20.101 19.739 139810.14 601318
2007-03-26 16 19.955 20.282 20.397 19.946 223266.79 601318
2007-03-27 17 20.216 20.269 20.467 20.145 139338.19 601318
2007-03-28 18 20.264 20.565 20.706 20.123 258263.69 601318
df[df[‘close‘]>df[‘open‘]] #时间索引的好处
标签:相关 1.0 not 灵活 float pre add apple blog
原文地址:http://www.cnblogs.com/mona524/p/7755395.html