欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python庫Pandas《Pandas Cookbook》第06章 索引對齊

系統 2066 0

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

文章目錄

  • 1.檢查索引
  • 2.求笛卡爾積
  • 3.索引爆炸
  • 4.用不等索引填充數值
  • 5.從不同的DataFrame追加列
  • 6.高亮每列的最大值
  • 7.用鏈式方法重現idxmax
  • 8.找到最常見的最大值

1.檢查索引

這段主要是將索引拿出來單獨講解,因為索引底層是numpy數組,所以很多操作類似于ndarray,比如支持[]運算,切片

Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第1張圖片

有許多和Series以及DataFrame相同的方法,比如min,max,isnull等;也可以直接拼接字符串,進行索引修改;還有就是通過比較運算符,得到BOOL索引
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第2張圖片

索引雖然底層是ndarry,但是本質和tuple很像,其存儲對象是不可變類型,不能直接賦值修改
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第3張圖片

索引也支持集合運算
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第4張圖片

2.求笛卡爾積

第1部分說過索引支持集合運算,而笛卡爾積就是一種集合運算;笛卡爾積——https://baike.baidu.com/item/笛卡爾乘積/6323173?fromtitle=笛卡爾積&fromid=1434391, 這是百度百科的定義,如果按這個定義來,下圖s1和s2的笛卡爾積應該有24個結果,所以索引的笛卡爾積是和索引有關的——相同索引之間進行笛卡爾積,其余的都用缺失值NaN表示
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第5張圖片

如果兩組索引及其順序完全相同,那么“+”就變成了普通加法;如果索引相同,而順序不同,“+”還是表示笛卡爾積
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第6張圖片

3.索引爆炸

當對Series對象進行復制的時候,如果直接用“=”,則會將不同的對象名指向同一個對象,為了完全復制,必須用copy()函數
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第7張圖片

salary1和salary2雖然數據一樣,但是salary1索引排序后,兩個Series對象索引順序不一樣了,就可以和salary2做笛卡爾積運算了
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第8張圖片
從下圖可以看出,笛卡爾積運算使得內存占用量爆炸,所以要慎用“+”
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第9張圖片

4.用不等索引填充數值

用difference()函數可以將一個索引不同于另外一個索引的值區分出來,其實這就是集合運算里面的求差運算
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第10張圖片
這里的“+”就是笛卡爾積運算,使用add()函數以及它的fill_value參數,去除了缺失值
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第11張圖片
缺失值處理后,就沒有了缺失值;但是,如果一個索引值在兩個進行笛卡爾積的Series都是缺失值,那么add函數使用fill_value參數也無法去除該索引值對應的缺失值
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第12張圖片
利用highlight_null()函數對缺失值NaN進行高亮顯示
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第13張圖片

5.從不同的DataFrame追加列

每個部門的最高工資——對部門名進行升序排列,工資進行降序排列,那么每個部門的對應的第一個工資就是該部門的最高工資了
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第14張圖片
做比較運算,employee中沒有高于最高工資的工資
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第15張圖片
如果對最高工資不去重,那么會有多個相同索引值對應不同的最高工資,那么直接賦值給employee新的一列,就會出錯
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第16張圖片
在這里插入圖片描述
在這里插入圖片描述
選取沒有重復索引值的最高工資,那就可以正確的賦值給employee新的一列了
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第17張圖片

6.高亮每列的最大值

下面這段代碼算是導入數據的預處理——先做類型判斷,將可以轉為數值的列都轉為數值類型,最后刪除掉只有兩個值的列(可能因為二值類型,沒有求最大值的意義)

            
              pd.options.display.max_rows = 8
#讀取college數據集,INSTNM作為列
college = pd.read_csv('data/college.csv',index_col='INSTNM')
college.dtypes

#MD_WNE_P10和GRAD_DEBT_MDN_SUPP兩列是對象類型,對其進行檢查,發現含有字符串
college.MD_EARN_WNE_P10.iloc[0]
college.GRAD_DEBT_MDN_SUPP.iloc[0]

#降序檢查
college.MD_EARN_WNE_P10.sort_values(ascending=False).head()

#可以用to_numeric,將某列的值做強制轉換
cols = ['MD_EARN_WNE_P10','GRAD_DEBT_MDN_SUPP']
for col in cols:
    college[col] = pd.to_numeric(college[col],errors='coerce')
college.dtypes.loc[cols]

#用select_dtypes方法過濾出數值列
college_n = college.select_dtypes(include=[np.number])
college_n.head()

#有的列只含有兩個值,用nunique()方法挑出這些列
criteria = college_n.nunique() == 2
criteria.head()

#將BOOL Series傳給索引運算符,生成二元列的列表
binary_cols = college_n.columns[criteria].tolist()
binary_cols

#用drop方法刪除這些列
college_n2 = college_n.drop(labels=binary_cols,axis='columns')
college_n2.head()

            
          

用idxmax()方法選出每列最大值的行索引,用unique()方法選出不重復的列名
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第18張圖片
用highlight_max()函數高亮最大值行
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第19張圖片
不用[]運算符,直接調用highlight_max()函數,會高亮每一行的最大值
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第20張圖片

7.用鏈式方法重現idxmax

選出數值列,通過eq()函數獲得列最大值的BOOL DataFrame
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第21張圖片
選出至少包括一個True值的行,用any()函數——一行/一列至少有一個True,則返回True
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第22張圖片
一共18列,最多允許18個最大值,但實際有401個,因為很多列的最大值有很多
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第23張圖片
兩次累加,那么1只會出現在最大值首次出現的位置,那么用eq()函數和1比較,就能篩選出首次出現最大值的索引了
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第24張圖片
最大值16個,所得結果和idxmax()函數比較,是一樣的
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第25張圖片
兩種方法耗時比較,時間相差2倍左右
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第26張圖片

8.找到最常見的最大值

idxmax()函數找到每行最大值對應的列名
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第27張圖片
最大值分布情況,以及某個最大值對應的學校,排名第二的種族分布情況
Python庫Pandas《Pandas Cookbook》第06章 索引對齊_第28張圖片


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品国产亚洲精品不卡 | 欧美vide | 欧美一区二区三区四区五区 | 国产三级理论 | 大片毛片| 九色网址 | 国产中文视频 | 狠狠色欧美亚洲狠狠色五 | 亚洲第一视频网站 | 狠狠躁夜夜躁人人爽天天miya | 成人av在线播放 | 欧美两性人xxxx高清免费 | 日本久久中文字幕 | 蜜桃免费一区二区三区 | 久久婷五月综合 | 欧美日韩中文字幕一区二区高清 | 色狠狠成人综合色 | 视频一区二区在线观看 | 午夜视频网址 | 天天噜噜揉揉狠狠夜夜 | 午夜伦理在线播放 | 电视剧全部免费观看 | 精品国产一区探花在线观看 | 久久噜噜噜精品国产亚洲综合 | 午夜视频免费 成人 | 日韩成人av网站 | 一区二区三区四区在线观看视频 | 久久狠狠色狠狠色综合 | 欧美三区在线观看 | 天天拍天天干 | 免费亚洲视频在线观看 | 欧美一区二区三区不卡免费 | 五月婷六月丁香狠狠躁狠狠爱 | 91精品欧美一区二区三区 | 天天久久 | 国产福利专区精品视频 | 亚洲人与牲动交xxxxbbbb | a毛片毛片av永久免费 | 久草2| 亚洲成人午夜在线 | 亚洲第一在线 |