在Python中,使用pandas
库操作DataFrame
是非常常见的,pandas
提供了丰富的函数和方法来处理表格数据。下面是一些常见的DataFrame
操作示例:
1. 创建 DataFrame
import pandas as pd# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)print(df)
2. 查看 DataFrame 基本信息
# 查看前几行
print(df.head()) # 默认查看前5行,可以传参数指定查看的行数# 查看后几行
print(df.tail()) # 默认查看后5行# 查看 DataFrame 的维度 (行数和列数)
print(df.shape)# 查看列名
print(df.columns)# 查看数据类型
print(df.dtypes)# 获取描述性统计信息
print(df.describe())# 获取特定列的数据
print(df['Name'])
3. 访问和选择数据
选择单列
# 选择某一列
names = df['Name']
选择多列
# 选择多列
subset = df[['Name', 'Age']]
选择特定行(基于索引)
# 通过行索引选择单行
row_0 = df.iloc[0] # 选择第0行# 通过行标签选择单行
row_0_by_label = df.loc[0] # 如果行有标签,使用loc根据标签获取
选择多行(基于索引)
# 选择多个连续的行
rows = df.iloc[0:3] # 选择第0行到第2行# 选择多个不连续的行
rows = df.iloc[[0, 2, 3]] # 选择第0、2、3行
条件筛选
# 条件筛选:选择 Age 大于 30 的行
filtered = df[df['Age'] > 30]
4. 添加、修改和删除列
添加列
# 添加一列
df['Salary'] = [50000, 60000, 70000, 80000]# 或者通过 apply 方法添加列
df['Age_in_10_years'] = df['Age'] + 10
修改列
# 修改某一列的值
df['Age'] = df['Age'] + 1 # 所有人的年龄都加1
删除列
# 删除某一列
df.drop('Salary', axis=1, inplace=True) # axis=1 表示删除列,axis=0 删除行
5. 排序数据
按列排序
# 按 Age 列升序排序
df_sorted = df.sort_values(by='Age', ascending=True)# 按多个列排序
df_sorted_multiple = df.sort_values(by=['Age', 'Name'], ascending=[True, False])
6. 处理缺失值
检查缺失值
# 检查每一列的缺失值数量
print(df.isnull().sum())# 检查是否存在缺失值
print(df.isnull().values.any())
填充缺失值
# 使用某个常数填充缺失值
df['Age'].fillna(30, inplace=True)# 使用前一个有效值填充缺失值
df['Age'].fillna(method='ffill', inplace=True)
删除缺失值
# 删除含有缺失值的行
df.dropna(inplace=True)# 删除含有缺失值的列
df.dropna(axis=1, inplace=True)
7. 合并 DataFrame
合并(连接)数据
# 行连接 (垂直合并)
df2 = pd.DataFrame({'Name': ['Eve', 'Frank'],'Age': [45, 50],'City': ['San Francisco', 'Dallas']
})
df_combined = pd.concat([df, df2], axis=0, ignore_index=True)# 列连接 (水平合并)
df3 = pd.DataFrame({'Country': ['USA', 'USA', 'USA', 'USA'],'Job': ['Engineer', 'Doctor', 'Artist', 'Teacher']
})
df_combined_columns = pd.concat([df, df3], axis=1)
基于列合并
# 使用 merge 方法合并两个 DataFrame,类似于 SQL 的 JOIN
df_left = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df_right = pd.DataFrame({'Name': ['Alice', 'Bob'], 'City': ['New York', 'Los Angeles']})df_merged = pd.merge(df_left, df_right, on='Name')
8. 分组操作
按列分组
# 按照 City 列分组并计算每组的平均值
grouped = df.groupby('City').mean()# 按多个列分组
grouped_multiple = df.groupby(['City', 'Age']).mean()
9. 应用函数
对列或行应用函数
# 对列应用函数
df['Age_squared'] = df['Age'].apply(lambda x: x**2)# 对行应用函数
df['Age_and_Salary'] = df.apply(lambda row: row['Age'] + row['Salary'], axis=1)
使用 map
和 applymap
操作
# 使用 map 对单列进行映射操作
df['City'] = df['City'].map({'New York': 'NY', 'Los Angeles': 'LA'})# 使用 applymap 对整个 DataFrame 进行操作
df = df.applymap(str) # 将所有值转换为字符串
10. 保存和读取数据
保存 DataFrame 到文件
# 保存为 CSV 文件
df.to_csv('data.csv', index=False)# 保存为 Excel 文件
df.to_excel('data.xlsx', index=False)
从文件读取 DataFrame
# 从 CSV 文件读取
df = pd.read_csv('data.csv')# 从 Excel 文件读取
df = pd.read_excel('data.xlsx')
11. 其他常用操作
DataFrame 转置
# 转置 DataFrame
df_transposed = df.T
重命名列
# 重命名列
df.rename(columns={'Name': 'Full Name', 'Age': 'Years'}, inplace=True)
这些是pandas
常见的DataFrame
操作。通过这些操作,你可以高效地清洗、处理和分析数据。如果你有更具体的需求,或者遇到问题,随时告诉我!