Skip to content

Pandas代码片段

1. 过滤数据

python
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. 分组和聚合数据

python
grouped = df.groupby('Age').mean()
print(grouped)

3. 数据缺失值

python
# Check for missing values
missing_values = df.isnull().sum()

# Fill missing values with a specific value
df['Age'].fillna(0, inplace=True)

4. 将函数应用于列

apply() 函数允许在 DataFrame 的行或列上应用自定义函数,以实现更复杂的数据处理和转换操作。

python
df['Age'] = df['Age'].apply(lambda x: x * 2)

5、连接DataFrames

这里的连接主要是行的连接,也就是说将两个相同列结构的DataFrame进行连接

python
# 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

这里的合并指的是列的合并,也就是说根据一个或若干个相同的列,进行合并

python
# 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, on='key', how='inner')
print(merged)

7. 数据透视表

pivot_table 是用于数据透视的重要函数之一。它根据一个或多个列的值对数据进行重新排列和汇总,以便更好地理解数据的结构和关系。

python
# Creating a pivot table
pivot_table = df.pivot_table(
  index='Name', 
  columns='Age',
  values='Value'
)
print(pivot_table)

8. 处理时间/日期类型数据

python
# Converting a column to DateTime
df['Date'] = pd.to_datetime(df['Date'])

9. 数据重塑(逆透视)

pandas.melt() 是用于将宽格式(wide format)的数据表格转换为长格式(long format)。这个函数通常用于数据重塑(data reshaping)操作,以便更容易进行数据分析和可视化。

python

pandas.melt(
  frame,
  id_vars=None,
  value_vars=None,
  var_name=None,
  value_name='value', 
  col_level=None
)

'''
  参数说明:
    - frame:要进行重塑操作的数据表格(DataFrame)。
    - id_vars:需要保留的列,它们将成为长格式中的标识变量(identifier - variable),不被"融化"。
    - value_vars:需要"融化"的列,它们将被整合成一列,并用新的列名表示。
    - var_name:用于存储"融化"后的列名的新列的名称。
    - value_name:用于存储"融化"后的值的新列的名称。
    - col_level:如果输入数据是多级索引(MultiIndex),
      则可以指定在哪个级别上应用"融化"操作。
'''

下面是一个示例,演示如何使用 melt() 函数将宽格式数据转换为长格式,假设有以下的宽格式数据表格 df:

IDNameMathEnglishHistory
1Amy908588
2Bob789276
3John887990

我们要将 Math、English 和 History 列"融化"为一个长格式数据表格,可以这样做:

python
melted_df = pd.melt(
  df,
  id_vars=['ID', 'Name'], 
  value_vars=['Math', 'English', 'History'],
  var_name='Subject',
  value_name='Score'
)

转换后的长格式数据表格 melted_df 如下所示:

IDNameSubjectScore
01AmyMath90
12BobMath78
23JohnMath88
31AmyEnglish85
42BobEnglish92
53JohnEnglish79
61AmyHistory88
72BobHistory76
83JohnHistory90

通过这种方式,你可以将宽格式数据表格中的多列数据整合到一个列中,以更容易进行分析、可视化或其他操作。melt() 函数在数据清洗和转换阶段非常有用。 melt() 或者可以理解为上面pivot_table 或者unstack的反操作。

10.分类数据

astype('category') 是用于将一列数据类型转换为分类(Category)类型的方法。将数据列转换为分类类型有助于节省内存和提高性能,特别是当数据列中包含有限的不同取值时。

python
# Encoding categorical variables
df['Category'] = df['Category'].astype('category')
df['Category'] = df['Category'].cat.codes

11. 数据抽样

python
# Randomly sample rows from a DataFrame
sampled_df = df.sample(n=2)

12. 计算累加和

python
# Calculating cumulative sum
df['Cumulative_Sum'] = df['Values'].cumsum()

13. 删除重复的数据

python
# Removing duplicate rows
df.drop_duplicates(
  subset=['Column1', 'Column2'], 
  keep='first', inplace=True
)

14. 创建虚拟变量

pandas.get_dummies() 是 Pandas 中用于执行独热编码(One-Hot Encoding)的函数。

python
# Creating dummy variables for categorical data
dummy_df = pd.get_dummies(
  df,
  columns=['Category']
)

15.数据导出

有很多个to方法,可以到导出不同的格式

python
# Exporting DataFrame to CSV
df.to_csv(
  'output.csv',
  index=False
)

Released under the MIT License.