今天我們將一下如何查看Pandas中的各類數據以及對Pandas進行處理的一些方法,通過這些方法我們可以更快的掌握Pandas對數據進行處理:
描述與統計函數應用修改列/行索引名稱類型的操作表合併的方式一、描述與統計
有時會我們在獲取到數據之後,想要查看一下數據的簡單統計指標(比如最大值,最小值,平均值,中位數等等),如想要查看年齡的最大值,就可以直接對年齡這一列調用max方法就可以了。
1、查看最大值
查看眾英雄中年齡最大的是多少歲,三種方式都可以查看
第一種是使用np.max()對info表中的年齡列進行操作
第二種是使用np.max()對info表下的年齡進行操作
第三種是info表下的年齡進行max()查找
2、查看均值
查看眾英雄年齡的均值
類似的可以通過調用min、mean、quantile、sum 方法可以實現最小值、平均值、中位數以及求和。可以看到,對一個Series調用這幾個方法之後,返回的都只是一個聚合結果。
3、按軸求和
下面給大家介紹一個有意思的方法:cumsum(),看這個方法的名字就能看出來它跟sum方法有點關係,應該是用來求和之類的,事實上的確如此,cumsum也是用來求和的,不過他是用來累加求和的,也就是通過它得到的結果與原始的Series或DataFrame的大小相同。
通過結果可以看到,cumsum最後的結果就是將上一次求和的結果與原始當前值求和作為當前值。
當然如果只是這種功能的話,也就沒有那麼有意思了,這個方法有意思的是可以對字符串類型的對象進行操作。
4、查看表格信息
雖然說常見的各種統計值都有對應的方法,如果我想要得到多個指標的話,就需要調用多次方法,是不是顯得有點麻煩呢?
Pandas 設計者自然也考慮到了這個問題,想要一次性獲取多個統計指標,只需調用 describe 方法即可。
可以看到,直接調用describe方法後,會顯示出數字類型的一些統計指標比如:總數,平均數,標準差,最小值,最大值,四分位數等
如果想要查看非數字類型的列的統計指標的話,可以設置include=[object]來獲得數據。
6、統計某個值出現的次數:value_counts
查看英雄們的城市和性別出現的次數
查看英雄的年齡分布
7、查看最小值或最大值對應的索引
如果想要查看某列最大值或最小值對應的的索引可以使用idxmax或idxmin方法來完成。
如果索引不是數據的話將會返回該行的行數。
查看哪位英雄的年齡最小
查看哪位英雄的年齡最大
8、離散化
有時候我們在處理數據的時候會碰到一些需求,比如想要將年齡進行離散化,也就是將年齡分成幾個區間,這裡我們想要將年齡分成三個區間段,就可以使用pandas的cut方法來完成。
通過這個結果可以看到,cut自動生成了等距的離散區間,如果自己想定義也是沒有問題的。
這裡我們將區間定義為3個區間,1-30之間屬於青少年英雄,30-60之間的屬於中年英雄,60-5000就屬於不正常的的地球英雄了。有時候離散化之後,想要給每個區間起一個名字,那麼我們可以指定labels參數
給英雄們添加一列中青年屬性使用loc[]給表添加列
除了可以使用cut進行離散化之外,qcut也可以實現離散化。Cut是根據每個值的大小來進行離散化,qcut是根據每個值出現的次數進行離散化的。
9、排序功能
在進行數據分析時,少不了的就是進行數據排序。Pandas支持兩種排序方式:按軸(索引或列)排序和按實際值排序。
9.1、按索引排序
Sort_index()方法默認是按照索引進行正序排列
下面這個是英文索引下的排序
還可以通過sort_values(by=』』)進行排序,by的意思是通過什麼區排序,直接填寫也可以。按性別排序:
按年齡排序:
如果想要進行倒序排列,可以設置參數axis=1或則ascending=False
9.2、按值排序
如果想要實現按照實際值來排序,例如想要按照年齡排序。
使用sort_values方法,參數設置by=age即可
有時候我們可能需要按照多個值來排序,例如:按照年齡和城市來一起排序,可以設置參數 by 為一個 list 即可,需要注意的是:list 中每個元素的順序會影響排序優先級的,先分組在排序,最後一個為排序標準。
有時候數據量太大的時候,我們可能只需要看前幾行或者後幾行的數據,那麼這個時候我們就可以用head()和tail()方法查看,head()方法默認只列印前5行內容,括號內可以填寫想要的行數,tail()方法同理,只不過tail()方法是查看後五行的數據。
一般在排序後,我們可能需要獲取最大的n個值或最小值的n個值,我們可以使用 nlargest 和 nsmallest 方法來完成,這比先進行排序,再使用 head(n)方法快得多。
二、函數應用
1.根據現有列生成新的列
生成一列元素為英雄年齡對數的
生成一列身高列
生成一列年齡加一的列
經過了復聯4後,英雄們通過各種戰鬥現在都統一長高了10釐米,現在再表格中添加一列英雄們的新身高
現在給英雄表中添加一列性別代碼列,1代表女士,0代表男式
2、常用函數
雖說 Pandas 為我們提供了非常豐富的函數,有時候我們可能需要自己定製一些函數,並將它應用到 DataFrame 或 Series。常用到的函數有map、apply、applymap。
Map是是 Series 中特有的方法,通過它可以對 Series 中的每個元素實現轉換。如果想通過年齡判斷用戶是否屬於中年人(50歲以上為中年),通過 map 可以輕鬆搞定它。
又比如我們可以通過城市來判斷地球還是外星,我們可以這麼操作。
Apply方法: apply 方法既支持 Series,也支持 DataFrame,在對 Series 操作時會作用到每個值上,在對 DataFrame 操作時會作用到所有行或所有列(通過 axis參數控制)。
對於series來說,apply方法和map方法差別不大
但是對於DataFrame來說,apply方法的作用對象是一行或一列數據
Applymap: applymap方法針對於DataFrame,它作用於DataFrame中的每個元素,它對DataFrame的效果類似於apply對 Series 的效果。
三、修改列/索引名稱
在使用 DataFrame 的過程中,經常會遇到修改列名,索引名等情況。使用 rename 輕鬆可以實現。修改列名只需要設置參數 columns 即可。
將鋼鐵俠和索爾的身高改為170
生成一列字符串格式的身高列
更改索引列名稱
修改列標籤,將年齡改為age,城市改為city,性別改為sex
類似的修改索引名只需要修改參數index就可以了
四、類型操作
1、get_dtype_counts()
如果想要獲取每種類型的列數的話,可以使用 get_dtype_counts 方法
2、 astype()
如果想要轉換數據類型的話,可以通過astype來完成
2.1、生成一列年齡的對數列,並且列元素元素為整數列
首先使用np.log生成一列對數列
使用round()函數將對數列四捨五入
使用astype()將對數列轉為整數列
2.2將年齡列改為浮點型
3、其他方法
有時候會涉及到將 object 類型轉為其他類型,常見的有轉為數字、日期、時間差,Pandas 中分別對應 to_numeric、to_datetime、to_timedelta 方法。
五、表合併的方式
1、append()方式
導入兩個表
查看兩個表的內容
使用append()方法將2表導入到1表中
2、concat()
2.1、縱向合併(axis=0(默認為0))
2.2、橫向合併(axis=1)