一、Pandas基础
主要内容是文件的读写、学习Series和DataFrame两种数据结构、常用函数(汇总、特征统计、唯一值、替换、排序、apply)以及窗口对象
其中窗口对象的内容借助图表的形式有助于理解rolling、shift、diff、pct_change
二、练习题
1、汇总函数的使用
df_demo = df[[‘HP’, ‘Attack’,‘Defense’,‘Sp. Atk’,‘Sp. Def’,‘Speed’]]
df_demo.apply(lambda x:x.sum(), axis=1)==df[‘Total’]
2、a
df_2 =df.drop_duplicates(’#’,keep=‘first’)
df_2[‘Type 1’].nunique()
df_2[‘Type 1’].value_counts().head(3)
2、b
df_2.drop_duplicates([‘Type 1’,‘Type 2’],keep=‘first’) 143个组合
df_2.drop_duplicates([‘Type 1’,‘Type 2’],keep=False) 40个组合
keep=False 所有重复组合的行进行了剔除
Q:表示保留只出现过一次的组合吗?
2.c
计算:Type1与Type2的所有组合减掉上一小题的所有组合
Q: 不能拼成字符串
同样的:L_part = [i+’ ‘+j for i, j in zip(df[‘Type 1’], df[‘Type 2’])]也会有问题
True: L_part = [i+’ '+j for i, j in zip(df[‘Type 1’], df[‘Type 2’].replace(np.nan, ‘’))]可以实现,由此可见replace(np.nan, ‘’)是将格式进行统一的关键,np.nan是一个float类型的数据.
最后用:res = set(L_full).difference(set(L_part)) 进行删减
3、a
s1=df[‘Attack’]
s1.mask(s1>120,‘high’).mask(s1<50,‘low’) 可以运行
s1.mask(s1>120,‘high’).mask(s1<50,‘low’).mask(s1<=120 & s1>=50,‘mid’) 报错
参考答案:df[‘Attack’].mask(df[‘Attack’]>120, ‘high’).mask(df[‘Attack’]<50, ‘low’).mask((50<=df[‘Attack’])&(df[‘Attack’]<=120), ‘mid’)
3、b
1)replace方法
2)apply
s2.apply(lambda x:str.upper(x))
3、c
numpy模块下的median作用为:计算沿指定轴的均值,返回数组元素的均值.
df[‘statistics’]=df[[‘HP’,‘Attack’, ‘Defense’, ‘Sp. Atk’, ‘Sp. Def’, ‘Speed’]].apply(lambda x:np.max((x-x.median()).abs()),axis=1)
df[‘statistics’].sort_values(ascending=False)
df.sort_values(‘statistics’,ascending=False)
第二个大题还需要时间去琢磨。