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

来源:互联网 发布:淘宝外卖和美团哪种好 编辑:程序博客网 时间:2024/06/08 14:57
读书笔记2:利用Python进行数据分析—pandas入门

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对象是不可修改的。

读书笔记2:利用Python进行数据分析—pandas入门读书笔记2:利用Python进行数据分析—pandas入门

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

reindex的(插值)method选项:
ffill或pad前向填充(或搬运)值
bfill或backfill后向填充(或搬运)值

丢弃指定轴上的項:drop;对于DataFrame,可以删除任意轴上的索引值。

读书笔记2:利用Python进行数据分析—pandas入门读书笔记2:利用Python进行数据分析—pandas入门

算数运算和数据对齐:

在算术方法中填充值:使用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是标准差。

读书笔记2:利用Python进行数据分析—pandas入门

相关系数和协方差:

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处理方法:

读书笔记2:利用Python进行数据分析—pandas入门

滤除缺失数据:
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())。

读书笔记2:利用Python进行数据分析—pandas入门

层次化索引:两个以上索引级别。包含:内层。
层次化索引在数据重塑和基于分组的操作很重要。DataFrame中,df.index.names=[“A”,“B”]
df.columns.names一样的。

重排分级顺序:
swaplevel接受两个级别编号或名称。互换列名,但值不变。
sortlevel则根据单个级别中的值对数据进行排序(稳定的)。
如果层次化索引是按字典方式从外到内排序(则调用sortlevel(0)或sort_index()),数据选取操作的性能要好很多。

根据级别汇总统计:
level选项:用于指定某条轴上求和的级别。
axis=1相当于pandas的groupby功能。

0 0
原创粉丝点击