您的位置:首页 > 编程语言 > Python开发

读书笔记2:利用Python进行数据分…

2017-04-17 15:02 344 查看
pandas两种主要数据结构:Series和DataFrame。大小写敏感

Series:索引index和数据values。

可以看成一个定长的有序字典。

通过字典创建Series:df=Series(s1)s1为字典。

传入字典,结果Series中的索引就是原字典的键(有序排列)

例如s=[‘A’,‘B’]

df1=Series(df,index=s)
NaN:非数字,not a number,在pandas中表示缺失或NA值。

pandas中的isnull和notnull函数用于检测缺失数据。pd.isnull()。
Series最重要的一个功能:它在算术运算符中自动对齐不同索引的数据。

Series有name属性。例如:df.name=‘hou’或df.index.name=‘state’。

Series的索引可以通过赋值直接修改。
del frame1[‘A’]删除列。

frame1[‘C’]=frame.state==‘Oh'
另一种常见的数据形式:嵌套字典

它传给DataFrame时,解释为:外层字典的键key作为列,内层键则作为行索引。
index对象是不可修改的。





重新索引reindex 例如:df.reindex([‘A’,‘B’,‘C’],fill_value=0)当前索引值不存在,为NaN或插值处理(上述fill_value)
reindex的(插值)method选项:

ffill或pad前向填充(或搬运)值

bfill或backfill后向填充(或搬运)值
丢弃指定轴上的項:drop;对于DataFrame,可以删除任意轴上的索引值。





算数运算和数据对齐:

在算术方法中填充值:使用df1的add方法,传入df2以及一个fill_value参数df1.add(df2,fill_value=0)。或重新用reindex建索引。

算术方法:add   加法

sub  减法   div   除法   mul乘法
函数应用和映射:

   numpy的ufuncs(元素级数组方法)也用于操作pandas对象:np.abs(df)。

   将函数应用到各列或行所形成的一维数组上,DataFrame的apply函数。

   元素级的python函数也是可以用的。用applymap得到df中各个浮点值得格式化字符串。例如:df=lambdax:'%.2f'%x

名字由来:Series有一个用于应用元素级的map方法。
排序和排名:

   对数据集排序:内置函数sorting

   对行或列索引进行排序(按字典顺序),可用sort_index,返回已排序的新对象。默认是升序排序。

参数:by=‘’。多列:by=[‘a‘,’b’]

若要按值对Series进行排序,可使用order方法。排序时候,任何缺失值NaN默认都会放到Series末尾。
排名(ranking):有点没看懂。
索引是否是唯一:用is_unique函数
在描述统计中,NA值会自动被排除,除非整个切片都是NA,通过skipna选项可禁用该功能。
axis约简的轴,DataFrame的行用0,列为1。

skipna:排除缺失值,默认值为True。

level:如果轴是层次化索引(MultiIndex),则根据level分组约简。
间接统计:idxmin和idxmax返回的是间接统计(即达到最小值和最大值的索引。)

argmin和argmax获得到最小值和最大值的索引位置(整数)。
累计值:df.cumsum()

汇总统计:df.describe()

mad根据平均值计算平均绝对离差。

var样本值的方差,std是标准差。



相关系数和协方差:
pct_change()百分数变化

Series的corr方法用于计算两个Series中重叠的,非NA的,按索引对齐的值的相关系数。cov用于计算协方差。可返回DataFrame的矩阵形式。

利用DataFrame的corrwith方法,你可以计算其列或行跟另一个Series或

DataFrame之间的相关系数。

传入一个Series将返回一个相关系数值Series。(针对各列进行计算)

传入DataFrame也是按列名配对的相关系数,axis=1是按行进行计算。
唯一值、值计数以及成员资格:

一维的Series的第一个函数是unique,可以得到Series中的唯一值数组。返回的唯一值是未排序的,如果需要,可对结果再次进行排序(uniques.sort())。

value_counts用于计算一个Series中各值出现的频率。参数:sort=false是降序排列。
isin用于判断矢量化集合的成员资格,可用于Series或者DataFrame列中的数据的子集。

若想得到DataFrame中多个相关列的一张柱状图,也将pandas.value_counts传给该DataFrame的apply函数。
内置的None值也会被当做NA处理。
NA处理方法:



滤除缺失数据:

Series:

dropna返回一个仅含非空数据和索引值的。

或布尔型索引:df[df.notnull()]
DataFrame:

dropna默认是丢弃所有缺失值的行。

传入how=‘all’将只丢弃全为NA的那些行。

要用这种方式丢弃列,只需传入axis=1即可。
涉及时间序列数df.dropna(thresh=3)
填充缺失数据:fillna将缺失值替换为常数。

例:df.fillna(1)缺失值全部替换为1。

若为字典时:df.fillna({1:2,3:1})。

fillna默认会返回新对象。试一试:总是返回被填充对象的引用:_=df.fillna(0,inplace=True)
fillna传入平均数或中位数:df.fillna(df.mean())。



层次化索引:两个以上索引级别。包含:内层。

层次化索引在数据重塑和基于分组的操作很重要。DataFrame中,df.index.names=[“A”,“B”]

df.columns.names一样的。
重排分级顺序:

swaplevel接受两个级别编号或名称。互换列名,但值不变。

sortlevel则根据单个级别中的值对数据进行排序(稳定的)。

如果层次化索引是按字典方式从外到内排序(则调用sortlevel(0)或sort_index()),数据选取操作的性能要好很多。
根据级别汇总统计:

level选项:用于指定某条轴上求和的级别。

axis=1相当于pandas的groupby功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: