黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python庫Pandas《Pandas Cookbook》第02章

系統(tǒng) 2583 0

這是書籍《Pandas Cookbook》書籍第02章的代碼復(fù)現(xiàn),所有代碼運(yùn)行在Jupyter Notebook上,原講解地址是:
https://www.jianshu.com/p/13dcecdacd7c
我上傳代碼的github地址是:
https://github.com/Asunqingwen/PandasCookbook.git
github上有該書中用到的data,里面代碼會(huì)不定期更新(因?yàn)楣ぷ髟颍瑫r(shí)間不定),直到本書學(xué)習(xí)完成!
相比原講解,會(huì)穿插一些自己的理解,水平有限,請(qǐng)各路大神指正。

文章目錄

  • 1.選取多個(gè)DataFrame列
  • 2.對(duì)列名進(jìn)行排序
  • 3.在整個(gè)DataFrame上操作
  • 4.串聯(lián)DataFrame方法
  • 5.在DataFrame上使用運(yùn)算符
  • 6.比較缺失值
  • 7.矩陣轉(zhuǎn)置
  • 8.確定大學(xué)校園多樣性

1.選取多個(gè)DataFrame列

在第01章中講過,DataFrame數(shù)據(jù)結(jié)構(gòu)的一列就是一個(gè)Series,所以選擇多列的方式和第01章中選取Series類似,當(dāng)我們選取的列數(shù)大于1時(shí),[]中的key必須是一個(gè)由列名組成的列表,不然會(huì)出錯(cuò)

            
              movie = pd.read_csv('data/movie.csv')
movie_actor_director = movie[['actor_1_name','actor_2_name','actor_3_name','director_name']]
movie_actor_director.head()

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第1張圖片

            
              #錯(cuò)誤選取多列的方式
movie['actor_1_name','actor_2_name','actor_3_name',"director_name"]

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第2張圖片

如果僅僅只選擇一列,[]中的key可以是列名組成的單列表,也可以是直接的列名,但是要注意這兩種方式的返回結(jié)果是一樣的,但是數(shù)據(jù)類型不一樣——從下圖可以看出,以列表作為key,返回的還是一個(gè)DataFrame;以列名直接作為key,返回的則是一個(gè)Series
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第3張圖片

DataFrame除了可以用列名組成的list進(jìn)行列選取,還可以用基于類型的select_dtypes()和基于模式匹配的filter()

            
              #使用select_dtypes(),選取整數(shù)列
movie.select_dtypes(include=['int64']).head()

#選取所有的數(shù)值列
movie.select_dtypes(include=['number']).head()

#通過filter()函數(shù)過濾選取多列
movie.filter(like='facebook').head()

#通過正則表達(dá)式選取多列
movie.filter(regex='\d').head()

#filter()函數(shù),傳遞列表到參數(shù)items,選取多列
movie.filter(items=['actor_1_name','asdf']).head()

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第4張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第5張圖片

2.對(duì)列名進(jìn)行排序

將DataFrame數(shù)據(jù)輸出的列名順序進(jìn)行重排

            
              #打印列索引
movie.columns

#將列索引按照指定的順序排列
disc_core = ['movie_title','title_year','content_rating','genres']
disc_people = ['director_name','actor_1_name','actor_2_name','actor_3_name']
disc_other = ['color','country','language','plot_keywords','movie_imdb_link']

cont_fb = ['director_facebook_likes','actor_1_facebook_likes','actor_2_facebook_likes',
            'actor_3_facebook_likes', 'cast_total_facebook_likes', 'movie_facebook_likes']
cont_finance = ['budget','gross']
cont_num_reviews = ['num_voted_users','num_user_for_reviews', 'num_critic_for_reviews']
cont_other = ['imdb_score','duration', 'aspect_ratio', 'facenumber_in_poster']

new_col_order = disc_core + disc_people + disc_other + \
                cont_fb + cont_finance + cont_num_reviews + cont_other
 #檢驗(yàn)列名順序重定義后,是否有重復(fù)的
set(movie.columns) == set(new_col_order)

movie2 = movie[new_col_order]
movie2.head()

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第6張圖片

3.在整個(gè)DataFrame上操作

類似于第01章Series的操作,主要是求取基本的統(tǒng)計(jì)特征min,max,medium,std,percentiles等
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第7張圖片

pandas中的sum默認(rèn)是以列為單位,求取一列的和;調(diào)用基本統(tǒng)計(jì)特征時(shí),有個(gè)skipna參數(shù),這個(gè)參數(shù)默認(rèn)值是True,即忽略缺失值;如果設(shè)置為False,則不忽略缺失值,即有缺失值的列不會(huì)進(jìn)行相應(yīng)特征計(jì)算,用NaN顯示,下圖的RuntimeWarning也是因?yàn)镹an的原因
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第8張圖片

4.串聯(lián)DataFrame方法

類似于第01章的Series操作,主要是對(duì)缺失值的處理
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第9張圖片

5.在DataFrame上使用運(yùn)算符

類似于第01章的Series,用數(shù)學(xué)符號(hào)或?qū)?yīng)的函數(shù)進(jìn)行基本數(shù)學(xué)運(yùn)算,進(jìn)行運(yùn)算的數(shù)據(jù)必須是同類型的
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第10張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第11張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第12張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第13張圖片

6.比較缺失值

pandas和numpy一樣都用NaN對(duì)象來表示缺失值,這是一個(gè)不等于自身的特殊對(duì)象,只有運(yùn)算符——不等于NaN,才會(huì)使得比較結(jié)果返回True
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第14張圖片

比較兩個(gè)DataFrame,就用assert_frame_equal()函數(shù),但是這個(gè)函數(shù)返回的是None,所以需要用try-except來判定比較的連個(gè)DataFrame是否相等
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第15張圖片

7.矩陣轉(zhuǎn)置

個(gè)人感覺,這一部分好像和矩陣的轉(zhuǎn)置沒啥關(guān)系,主要是兩個(gè)函數(shù)cumsum和sort_values——cumsum是個(gè)累加函數(shù),參數(shù)axis指定累加的方向,比如axis=1,則是行方向累加,第一列不動(dòng),逐列累加到后面的列;sort_values則是一個(gè)排序函數(shù),也有個(gè)參數(shù)axis用來指定排序的方向,但是它第一個(gè)參數(shù)是by,必須指定為和axis對(duì)應(yīng)的列名或者行名,才能對(duì)該列名或行名后的所以列或行進(jìn)行相應(yīng)的排序
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第16張圖片

8.確定大學(xué)校園多樣性

note:這次導(dǎo)入了兩份數(shù)據(jù),注意區(qū)別上面導(dǎo)入的數(shù)據(jù)哦
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第17張圖片

這一段主要是通過pandas的一些基本數(shù)據(jù)處理方式,獲取大學(xué)人口種類分布的多樣性,首先是數(shù)據(jù)清洗,去除缺失值
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第18張圖片

給定一個(gè)閾值,每個(gè)種族的人口比例大于0.15,計(jì)算出每個(gè)學(xué)校人口比例大于0.15的種族有多少個(gè),最后對(duì)種類數(shù)進(jìn)行降序排列,輸出前5個(gè)
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第19張圖片

用loc函數(shù)查看最具有人口多樣性的兩個(gè)大學(xué)的人口具體分布情況,同時(shí)查看了US News公布的前五所大學(xué)在我們所計(jì)算的多樣性結(jié)果中的情況
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運(yùn)算_第20張圖片


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論