15個(gè)基本且常用Pandas代碼片段
Pandas提供了強(qiáng)大的數(shù)據(jù)操作和分析功能,是數(shù)據(jù)科學(xué)的日?;竟ぞ?。在本文中,我們將介紹最常用的15個(gè)Pandas代碼片段。這些片段將幫助簡(jiǎn)化數(shù)據(jù)分析任務(wù),從數(shù)據(jù)集中提取有價(jià)值的見(jiàn)解。
1、過(guò)濾數(shù)據(jù)
Pandas提供了多種方法來(lái)過(guò)濾數(shù)據(jù)。
import pandas as pd
# Create a DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
# Filter rows where Age is greater than 30
filtered_df = df[df['Age'] > 30]
print(filtered_df)
2、分組和聚合數(shù)據(jù)
# Grouping by a column and calculating the mean
grouped = df.groupby('Age').mean()
print(grouped)
3、數(shù)據(jù)缺失值
# Check for missing values
missing_values = df.isnull().sum()
# Fill missing values with a specific value
df['Age'].fillna(0, inplace=True)
4、將函數(shù)應(yīng)用于列
apply() 函數(shù)允許在 DataFrame 的行或列上應(yīng)用自定義函數(shù),以實(shí)現(xiàn)更復(fù)雜的數(shù)據(jù)處理和轉(zhuǎn)換操作。
df['Age'] = df['Age'].apply(lambda x: x * 2)
5、連接DataFrames
這里的連接主要是行的連接,也就是說(shuō)將兩個(gè)相同列結(jié)構(gòu)的DataFrame進(jìn)行連接
# Concatenate two DataFrames
df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})
result = pd.concat([df1, df2], ignore_index=True)
print(result)
6、合并DataFrames
這里的合并指的是列的合并,也就是說(shuō)根據(jù)一個(gè)或若干個(gè)相同的列,進(jìn)行合并
# Merge two DataFrames
left = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
right = pd.DataFrame({'key': ['B', 'C', 'D'], 'value': [4, 5, 6]})
merged = pd.merge(left, right, notallow='key', how='inner')
print(merged)
7、數(shù)據(jù)透視表
pivot_table 是用于數(shù)據(jù)透視的重要函數(shù)之一。它根據(jù)一個(gè)或多個(gè)列的值對(duì)數(shù)據(jù)進(jìn)行重新排列和匯總,以便更好地理解數(shù)據(jù)的結(jié)構(gòu)和關(guān)系。
# Creating a pivot table
pivot_table = df.pivot_table(index='Name', columns='Age', values='Value')
print(pivot_table)
8、處理時(shí)間/日期類(lèi)型數(shù)據(jù)
# Converting a column to DateTime
df['Date'] = pd.to_datetime(df['Date'])
9、數(shù)據(jù)重塑
pandas.melt() 是用于將寬格式(wide format)的數(shù)據(jù)表格轉(zhuǎn)換為長(zhǎng)格式(long format)。這個(gè)函數(shù)通常用于數(shù)據(jù)重塑(data reshaping)操作,以便更容易進(jìn)行數(shù)據(jù)分析和可視化。
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value',col_level=None)
參數(shù)說(shuō)明:
- frame:要進(jìn)行重塑操作的數(shù)據(jù)表格(DataFrame)。
- id_vars:需要保留的列,它們將成為長(zhǎng)格式中的標(biāo)識(shí)變量(identifier variable),不被"融化"。
- value_vars:需要"融化"的列,它們將被整合成一列,并用新的列名表示。
- var_name:用于存儲(chǔ)"融化"后的列名的新列的名稱(chēng)。
- value_name:用于存儲(chǔ)"融化"后的值的新列的名稱(chēng)。
- col_level:如果輸入數(shù)據(jù)是多級(jí)索引(MultiIndex),則可以指定在哪個(gè)級(jí)別上應(yīng)用"融化"操作。
下面是一個(gè)示例,演示如何使用 melt() 函數(shù)將寬格式數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)格式,假設(shè)有以下的寬格式數(shù)據(jù)表格 df:
ID Name Math English History
0 1 Amy 90 85 88
1 2 Bob 78 92 76
2 3 John 88 79 90
我們要將 Math、English 和 History 列"融化"為一個(gè)長(zhǎng)格式數(shù)據(jù)表格,可以這樣做:
melted_df = pd.melt(df, id_vars=['ID', 'Name'], value_vars=['Math', 'English', 'History'],var_name='Subject', value_name='Score')
轉(zhuǎn)換后的長(zhǎng)格式數(shù)據(jù)表格 melted_df 如下所示:
ID Name Subject Score
0 1 Amy Math 90
1 2 Bob Math 78
2 3 John Math 88
3 1 Amy English 85
4 2 Bob English 92
5 3 John English 79
6 1 Amy History 88
7 2 Bob History 76
8 3 John History 90
通過(guò)這種方式,你可以將寬格式數(shù)據(jù)表格中的多列數(shù)據(jù)整合到一個(gè)列中,以更容易進(jìn)行分析、可視化或其他操作。melt() 函數(shù)在數(shù)據(jù)清洗和轉(zhuǎn)換階段非常有用。
melt() 或者可以理解為上面pivot_table 或者unstack的反操作。
10、分類(lèi)數(shù)據(jù)
astype('category') 是用于將一列數(shù)據(jù)類(lèi)型轉(zhuǎn)換為分類(lèi)(Category)類(lèi)型的方法。將數(shù)據(jù)列轉(zhuǎn)換為分類(lèi)類(lèi)型有助于節(jié)省內(nèi)存和提高性能,特別是當(dāng)數(shù)據(jù)列中包含有限的不同取值時(shí)。
# Encoding categorical variables
df['Category'] = df['Category'].astype('category')
df['Category'] = df['Category'].cat.codes
11、數(shù)據(jù)抽樣
# Randomly sample rows from a DataFrame
sampled_df = df.sample(n=2)
12、計(jì)算累加和
# Calculating cumulative sum
df['Cumulative_Sum'] = df['Values'].cumsum()
13、刪除重復(fù)的數(shù)據(jù)
# Removing duplicate rows
df.drop_duplicates(subset=['Column1', 'Column2'], keep='first', inplace=True)
14、創(chuàng)建虛擬變量
pandas.get_dummies() 是 Pandas 中用于執(zhí)行獨(dú)熱編碼(One-Hot Encoding)的函數(shù)。
# Creating dummy variables for categorical data
dummy_df = pd.get_dummies(df, columns=['Category'])
15、數(shù)據(jù)導(dǎo)出
有很多個(gè)to方法,可以到導(dǎo)出不同的格式
# Exporting DataFrame to CSV
df.to_csv('output.csv', index=False)
總結(jié)
以上這15個(gè)Pandas代碼片段是我們?nèi)粘W畛S玫臄?shù)據(jù)操作和分析操作。熟練的掌握它,并將它們合并到工作流程中,可以提高處理和探索數(shù)據(jù)集的效率和效果。