Pandas資料探索

2021-10-02 19:58:16 字數 3220 閱讀 9909

檢視資料

排序索引和獲取資料

應用函式到單元格、列、行

分組彙總表

增刪行列

pandas主要資料結構是series和dataframe類

1、series是一種類似於一維陣列的物件,它由一組資料(各種numpy資料型別)及一組與之相關的資料標籤(即索引)組成。

2、dataframe是乙個二維資料結構,即一張格,其中每列資料的型別相同。你可以把它看成由 series 例項構成的字典。

首先載入必要的庫,即 numpy 和 pandas

import numpy as np

import pandas as pd

import warnings

warnings.filterwarnings('ignore')

後兩行表示在編譯過程中忽略警告資訊。

df.head() 檢視前 5 行資料。

df.shape檢視該資料庫的維度,行數和列數。

df.columns檢視該資料庫的特徵名稱,即列名。

df.info()檢視該資料庫的特徵型別,注意是否有缺失值。

df.describe()可以顯示數值特徵(int64 和 float64)的基本統計學特性,如未缺失值的數值、均值、標準差、範圍、四分位數等。

df.describe(include=[『object』, 『bool』])檢視非數值特徵的統計資料。

astype() 方法可以更改列的型別:

如:df[『列名』] = df[『列名』].astype(『int64』)

value_counts() 方法可以檢視類別(型別為 object )和布林值(型別為 bool )特徵:

如:df[『列名』].value_counts() ——>顯示的是數值

df[『列名』].value_counts(normalize=true) ———>顯示的是比例

問題:資料集中有多少男性和女性?

data['***'].value_counts()
1、根據一列排序

df.sort_values(by=『列名』, ascending=false)

表示根據某個列名排序。ascending=false表示倒序排列;ascending=true表示公升序排列。

2、根據多列排序

df.sort_values(by=[『列名1』, 『列名2』],ascending=[true, false])

表示先按 列名1 公升序排列,再按 列名2 降序排列

df[『列名』]得到單獨的列

df[p(df[『name』])]布林值索引獲取單獨的列

如:df[df[『列名』] == 1].mean()表示當列名的值為1的數的均值。

df[df[『列名1』] == 1][『列名2』].mean()表示在列名1的值為1的情況下。對應列名2的均值。

問題:資料集中女性的平均年齡是多少?

data[data['***'] == 'female']['age'].mean()
問題:統計男性高收入人群中未婚(包含離婚和分居)人群各自所佔數量。

data[(data['***'] == 'male') &(data['marital-status'].isin(['never-married', 'separated', 'divorced']))]['salary'].value_counts()
dataframe 可以通過列名、行名、行號進行索引。loc 方法為通過名稱索引,iloc 方法為通過數字索引。

df.loc[0:5, 『列名1』:『列名2』]表示輸出0到5行,列名1到列名2的資料。

df.iloc[0:5, 0:3]表示輸出前 5 行的前 3 列資料。

df[:1] 和 df[-1:] 可以得到 dataframe 的首行和末行。

pandas 下分組資料的一般形式為:

df.groupby(by=grouping_columns)[columns_to_show].function()

根據 grouping_columns 的值進行分組。

接著,選中感興趣的列(columns_to_show)。若不包括這一項,那麼就會選中所有非 groupby 列(即除 grouping_colums 外的所有列)。

最後,應用乙個或多個函式(function)。

一、透視表

透視表(pivot table)是電子**程式和其他資料探索軟體中一種常見的資料彙總工具。它根據乙個或多個鍵對資料進行聚合,並根據行和列上的分組將資料分配到各個矩形區域中

通過 pivot_table() 方法可以建立透視表,其引數如下:

values 表示需要計算的統計資料的變數列表

index 表示分組資料的變數列表

aggfunc 表示需要計算哪些統計資料,例如,總和、均值、最大值、最小值等。

如:df.pivot_table([『列名1』, 『列名2』, 『列名3』], [『分組變數列』], aggfunc=『mean』)

二、交叉表

交叉表(cross tabulation)是一種用於計算分組頻率的特殊透視表,在 pandas 中一般使用 crosstab() 方法構建交叉表。

如:pd.crosstab(df[『列1』], df[『列2』])——>顯示的是數值

pd.crosstab(df[『列1』], df[『列2』], normalize=true)——>顯示的是比例

問題:計算各國超過和低於 50k 人群各自的平均周工作時長。

pd.crosstab(data['native-country'], data['salary'],

values=data['hours-per-week'], aggfunc=np.mean).t

增:

使用 insert()方法新增列

df.insert(loc=len(df.columns), column=『新增的列名』, value=值)

減:使用 drop() 方法刪除列和行

移除先前創捷的列:

df.drop([『列名1』, 『列名2』], axis=1, inplace=true)axis=1表示列,inplace 引數表示是否修改原始 dataframe

刪除行:

df.drop([1, 2]).head()

2 Pandas資料初探索之資料型別與資料篩選

1 pandas的資料型別主要結合了pandas和numpy兩個模組中的資料型別,包括以下幾種 2 通過dateframe物件的dtypes屬性,可得到各個特徵的資料型別。例如 df.dtypes 3 型別轉換 1 通過astype 轉換資料型別,預設情況下會產生物件轉換後的乙個副本 df a df...

3 Pandas資料初探索之索引調整方法

1 重新索引 在pandas物件中,其實索引也是乙個物件,所以可對其進行修改。例如 df.index a b c df df pd.dataframe df df one two three 0 0.996986 0.190981 0.482912 1 0.233812 0.140953 0.052...

pandas 排序 Pandas 資料排序

python 的 pandas 庫中有一類對資料排序的方法,主要分為對引數列排序,對數值排序,及二者混合三種。一.引數列排序 首先我們生成乙個亂序數列 unsorted df 隨後我們可通過 df.sort index 函式對資料集進行排序操作 如不做規定,返回行引數正序排序 新增引數 ascend...