一、基礎概念
pandas是python中一個數據處理庫。它是基於Numpy的庫,擁有比較方便的數據處理和分析能力。其中pandas describe方法是pandas庫中一個比較常用的統計分析方法,它能夠統計數據的基本情況,例如數量、均值、標準差、最小值、最大值等
describe()的默認設置返回統計量:如最大值、最小值、均值、方差等。返回結果的行標籤是統計量,列標記是Series/Dataframe中的列
import pandas as pd
data = {'姓名': ['小明', '小紅', '小張', '小李'],
'性別': ['男', '女', '男', '女'],
'年齡': [18, 20, 22, 25],
'身高': [170.0, 173.5, 180.0, 165.5],
'體重': [60, 65, 70, 55]}
df = pd.DataFrame(data) #生成DataFrame
#使用pandas的describe函數輸出數據的基本情況
print(df.describe())
二、常用參數
除了默認參數外,describe()還有許多可選參數,以適應多種情況下的統計和計算。下面是幾個常用的參數:
1、percentiles
使用percentiles參數可以控制得到輸出結果中附帶的分位數,以浮點數數組的形式指定,需要給出分位數的值。默認是[.25,.50,.75],表示輸出25%,50%和75%的分位數。
import pandas as pd
data = {'姓名': ['小明', '小紅', '小張', '小李'],
'性別': ['男', '女', '男', '女'],
'年齡': [18, 20, 22, 25],
'身高': [170.0, 173.5, 180.0, 165.5],
'體重': [60, 65, 70, 55]}
df = pd.DataFrame(data) #生成DataFrame
#使用pandas的describe函數輸出數據的基本情況(包含0.1,0.5,0.9的列表)
print(df.describe(percentiles=[.1, .5, .9]))
2、include/exclude
使用include、exclude參數可以篩選出需要或不需要出現在結果中的列數據
import pandas as pd
data = {'姓名': ['小明', '小紅', '小張', '小李'],
'性別': ['男', '女', '男', '女'],
'年齡': [18, 20, 22, 25],
'身高': [170.0, 173.5, 180.0, 165.5],
'體重': [60, 65, 70, 55]}
df = pd.DataFrame(data) #生成DataFrame
#使用pandas的describe函數輸出「姓名」列和「年齡」列的基本情況
print(df.describe(include=['object', 'int'],
exclude=[np.number]))
3、datetime_is_numeric
使用datetime_is_numeric參數可以判斷是否將datetime類型的數據統計為數值類型數據。如果該參數值為True,則datetime類型會被當作數值型數據進行統計,如果該值為False,則datetime類型不會被當作數值型數據進行統計
import pandas as pd
data = {'時間': ['2022-01-01 10:08:00',
'2022-01-01 11:00:10',
'2022-01-01 15:25:08',
'2022-01-01 18:33:20'],
'數值': [30.21,54.65,22.53,45.32]}
df = pd.DataFrame(data) #生成DataFrame
df['時間'] = pd.to_datetime(df['時間'])
#使用pandas的describe函數, 將時間項數據視為非數值型
print(df.describe(datetime_is_numeric=False))
4、include_all
使用include_all參數可以顯示所有的唯一值信息(include參數設置為all的信息),以字典的形式返回所有列的唯一值 unique、唯一值的數量,每個唯一值的數量分別佔總數據樣本的多少
import pandas as pd
data = {'姓名': ['小明', '小紅', '小張', '小李'],
'性別': ['男', '女', '男', '女'],
'年齡': [18, 20, 22, 25],
'身高': [170.0, 173.5, 180.0, 165.5],
'體重': [60, 65, 70, 55]}
df = pd.DataFrame(data) #生成DataFrame
#使用pandas的describe函數,輸出唯一值信息
print(df.describe(include='all'))
三、應用場景
1、數據探索性分析
在數據探索性分析中,describe()主要被用於對數據進行初步的分析。例如,我們將可以使用describe()函數獲取一個最初的數據摘要,以便更好地理解數據的基本情況
import pandas as pd
#導入數據集
df = pd.read_csv('data.csv', encoding='utf-8')
#使用pandas的describe函數,查看數據的基本情況
print(df.describe())
2、數據預處理
describe()函數在數據預處理中也是一個很有用的工具,它經常被用來了解數據分佈、空值等情況。例如,我們可以使用describe()函數來判斷數據中有無缺失值,以及如何進行處理。
import pandas as pd
#導入數據集
df = pd.read_csv('data.csv', encoding='utf-8')
#判斷數據集中是否有空值
print(df.describe().isnull().any().any())
3、特徵工程
特徵工程是建立機器學習模型的重要步驟。在特徵工程中,describe()函數經常被用來對數據分佈、極值等進行分析。
import pandas as pd
#導入數據集
df = pd.read_csv('data.csv', encoding='utf-8')
#使用describe函數,獲取數據的基本情況
df_describe = df.describe()
#獲取每個特徵中極值的差距,並存入新的一列中
df_describe['range'] = df_describe.loc['max'] - df_describe.loc['min']
print(df_describe)
4、數據可視化
描述統計量可以幫助我們快速了解數據的分佈情況,通過可視化將統計量呈現出來可以更加直觀。例如,對於離散型數據,我們可以繪製柱狀圖呈現出每個類別的數量;對於數值型數據,我們可以繪製箱線圖來呈現數據的分佈情況。
import pandas as pd
import matplotlib.pyplot as plt
#導入數據集
df = pd.read_csv('data.csv', encoding='utf-8')
#使用describe函數,獲取數據的基本情況
df_describe = df.describe()
#對年齡進行數據可視化
df['年齡'].plot(kind='box')
plt.show()
#繪製身高的柱狀圖
df['身高'].value_counts().plot(kind='bar')
plt.show()
四、總結
pandas describe()函數是數據科學家通常用來了解數據集基本情況的函數。它提供了一些標準統計值,如最小值、最大值、方差、中位數、四分位數等,對於探索性數據分析、數據預處理、特徵工程、數據可視化等環節非常有用。
原創文章,作者:QXCIE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/334763.html