问题
【问题一】 Series和DataFrame有哪些常见属性和方法?
series属性:values、index、name、dtpye
DataFrame属性:values、index、name、dtpye、columns、shape
方法:mean() rename() drop() del assign() T
【问题二】 value_counts会统计缺失值吗?
不会,count返回非缺失值元素个数,value_counts返回每个元素有多少个
【问题三】 与idxmax和nlargest功能相反的是哪两组函数?
idxmin nsmallest
【问题四】 在常用函数一节中,由于一些函数的功能比较简单,因此没有列入,现在将它们列在下面,请分别说明它们的用途并尝试使用。
sum 求和
mean 平均数
median中位数
mad根据平均值计算平均绝对离差
min最小值/max最大值
abs绝对值
std标准差/var方差
quantile 计算样本的分位数(0到1)
cummax 样本值的累计最小值
cumsum 样本值的累计和
cumprod 样本值的累计积
【问题五】 df.mean(axis=1)是什么意思?它与df.mean()的结果一样吗?第一问提到的函数也有axis参数吗?怎么使用?
不一样 df.mean() =df.mean(axis=0)
按行求平均值
df.mean(axis=1)是按列求平均值
练习
【练习一】 现有一份关于美剧《权力的游戏》剧本的数据集,请解决以下问题:
got=pd.read_csv(r'D:\study\pandas\data\Game_of_Thrones_Script.csv')
got.head()
#a)在所有的数据中,一共出现了多少人物?
got['Name'].nunique()
564
#b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话?
got['Name'].value_counts().head()
tyrion lannister
#c)以单词计数,谁说了最多的单词?
got_words= got.assign(Words=got['Sentence'].apply(lambda x:len(x.split()))).sort_values(by='Name')
got_words.head()
#新增了Words列,生成一个新的got_words的DataFrame
L_count = []
N_words = list(zip(got_words['Name'],got_words['Words']))
for i in N_words:
if i ==N_words[0]:
L_count.append(i[1])
last = i[0]
else:
L_count.append(L_count[-1]+i[1] if i[0] == last else i[1])
last = i[0]
got_words['count']=L_count
got_words['Name'][got_words['count'].idxmax()]
‘tyrion lannister’
【练习二】现有一份关于科比的投篮数据集,请解决如下问题:
kobe=pd.read_csv(r'D:\study\pandas\data\Kobe_data.csv',index_col='shot_id')
kobe.head()
#a)哪种action_type和combined_shot_type的组合是最多的?
pd.Series(list(zip(kobe['action_type'],kobe['combined_shot_type']))).value_counts().index[0]
#b) 在所有被记录的game_id中,遭遇到最多的opponent是一个支?
pd.Series(list(list(zip(*(pd.Series(list(zip(kobe['game_id'],kobe['opponent']))).unique()).tolist()))[1])).value_counts().index[0]