日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python庫Pandas《Pandas Cookbook》第02章

系統 2312 0

這是書籍《Pandas Cookbook》書籍第02章的代碼復現,所有代碼運行在Jupyter Notebook上,原講解地址是:
https://www.jianshu.com/p/13dcecdacd7c
我上傳代碼的github地址是:
https://github.com/Asunqingwen/PandasCookbook.git
github上有該書中用到的data,里面代碼會不定期更新(因為工作原因,時間不定),直到本書學習完成!
相比原講解,會穿插一些自己的理解,水平有限,請各路大神指正。

文章目錄

  • 1.選取多個DataFrame列
  • 2.對列名進行排序
  • 3.在整個DataFrame上操作
  • 4.串聯DataFrame方法
  • 5.在DataFrame上使用運算符
  • 6.比較缺失值
  • 7.矩陣轉置
  • 8.確定大學校園多樣性

1.選取多個DataFrame列

在第01章中講過,DataFrame數據結構的一列就是一個Series,所以選擇多列的方式和第01章中選取Series類似,當我們選取的列數大于1時,[]中的key必須是一個由列名組成的列表,不然會出錯

            
              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運算_第1張圖片

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

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第2張圖片

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

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

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

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

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

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

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

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第4張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第5張圖片

2.對列名進行排序

將DataFrame數據輸出的列名順序進行重排

            
              #打印列索引
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
 #檢驗列名順序重定義后,是否有重復的
set(movie.columns) == set(new_col_order)

movie2 = movie[new_col_order]
movie2.head()

            
          

Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第6張圖片

3.在整個DataFrame上操作

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

pandas中的sum默認是以列為單位,求取一列的和;調用基本統計特征時,有個skipna參數,這個參數默認值是True,即忽略缺失值;如果設置為False,則不忽略缺失值,即有缺失值的列不會進行相應特征計算,用NaN顯示,下圖的RuntimeWarning也是因為Nan的原因
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第8張圖片

4.串聯DataFrame方法

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

5.在DataFrame上使用運算符

類似于第01章的Series,用數學符號或對應的函數進行基本數學運算,進行運算的數據必須是同類型的
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第10張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第11張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第12張圖片
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第13張圖片

6.比較缺失值

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

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

7.矩陣轉置

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

8.確定大學校園多樣性

note:這次導入了兩份數據,注意區別上面導入的數據哦
Python庫Pandas《Pandas Cookbook》第02章 DataFrame運算_第17張圖片

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

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

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 米易县| 新田县| 永年县| 遵化市| 商河县| 四子王旗| 谷城县| 百色市| 蒙自县| 房山区| 北川| 神池县| 永定县| 宜兴市| 永修县| 阿图什市| 固阳县| 扎囊县| 清流县| 叙永县| 噶尔县| 徐闻县| 综艺| 花莲市| 长海县| 蓬安县| 洮南市| 岐山县| 元江| 潼关县| 同德县| 锡林郭勒盟| 威宁| 竹溪县| 罗定市| 云林县| 浙江省| 冀州市| 通州区| 南阳市| 郓城县|