pandas学习记录(一)

本学习记录参考Joyful-Pandas进行学习

pandas基础

知识点

未命名文件

问题与练习

1. 问题

【问题一】 Series和DataFrame有哪些常见属性和方法?

  • Series
属性方法 说明
s.values 访问s的内容
s.index 获取s的索引
s.iteritems() 获取索引和值对
s.dtype 获取s的数据类型
s[‘a’] 根据索引访问元素
  • DataFrame
属性方法 说明
df.index 访问行索引
df.columns 访问列索引
df.values 访问数据
df.shape 获取df的数据形状

【问题二】 value_counts会统计缺失值吗?

不会,统计缺失值可以使用df['columns'].isnull().value_counts()

【问题三】 如果有多个索引同时取到最大值,idxmax会返回所有这些索引吗?如果不会,那么怎么返回这些索引?

不会,返回的是第一个最大值的索引;
可以使用maxindex = s[s==s.max()].index

【问题四】 在常用函数一节中,由于一些函数的功能比较简单,因此没有列入,现在将它们列在下面,请分别说明它们的用途并尝试使用。

sum/mean/median/mad/min/max/abs/std/var/quantile/cummax/cumsum/cumprod

函数 功能
sum 求和
mean 均值
median 中位数
mad 均值差的绝对值
min 最小值
max 最大值
abs 绝对值
std 标准差
var 方差
quantile 分位数
cummax 到目前为止的最大值
cumsum 累加和
cumprod 累计积

【问题五】 df.mean(axis=1)是什么意思?它与df.mean()的结果一样吗?问题四提到的函数也有axis参数吗?怎么使用?

df.mean(axis=1)是df中行的平均值,df.mean()是列的平均值

【问题六】 对值进行排序后,相同的值次序由什么决定?

由索引决定

【问题七】 Pandas中为各类基础运算也定义了函数,比如s1.add(s2)表示两个Series相加,但既然已经有了'+',是不是多此一举?

add()包含 fill_value 参数, 可以填充缺失值然后再相加

【问题八】如果DataFrame某一列的元素是numpy数组,那么将其保存到csv在读取后就会变成字符串,怎么解决?

df['columns'] = df['columns'].astype(np.float32)

2. 练习

【练习一】 现有一份关于美剧《权力的游戏》剧本的数据集,请解决以下问题:

(a)在所有的数据中,一共出现了多少人物?
df = pd.read_csv('data/Game_of_Thrones_Script.csv')
df['Name'].nunique()
#564
(b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话?
df['Name'].value_counts()
'''
tyrion lannister      1760
jon snow              1133
daenerys targaryen    1048
cersei lannister      1005
jaime lannister        945
                      ... 
merry                    1
nights watchmen          1
willem                   1
greizhen                 1
unsullied captain        1
Name: Name, Length: 564, dtype: int64
'''
(c)以单词计数,谁说了最多的单词?(不是单句单词最多,是指每人说过单词的总数最多,为了简便,只以空格为单词分界点,不考虑其他情况)
df['Sentence'].str.len().value_counts().idxmax()
#22

【练习二】现有一份关于科比的投篮数据集,请解决如下问题:

(a)哪种action_type和combined_shot_type的组合是最多的?
df = pd.read_csv('data/Kobe_data.csv',index_col='shot_id')
pd.Series(list(zip(df['action_type'],df['combined_shot_type']))).value_counts()
'''
(Jump Shot, Jump Shot)                             18880
(Layup Shot, Layup)                                 2567
(Driving Layup Shot, Layup)                         1978
                                                ........
(Driving Floating Bank Jump Shot, Jump Shot)           1
(Turnaround Fadeaway Bank Jump Shot, Jump Shot)        1
(Cutting Finger Roll Layup Shot, Layup)                1
dtype: int64
'''
(b)在所有被记录的game_id中,遭遇到最多的opponent是一个支?(由于一场比赛会有许多次投篮,但对阵的对手只有一个,本题相当于问科比和哪个队交锋次数最多)
df.groupby('game_id')['opponent'].unique().astype(str).value_counts()
'''
['SAS']    91
['PHX']    87
['UTA']    84
['DEN']    83
   .........
['VAN']    18
['NOP']    16
['BKN']     3
Name: opponent, dtype: int64
'''
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇