dataframe数据处理
时间: 2025-07-05 19:57:59 浏览: 12
在使用 Pandas 进行数据处理时,DataFrame 是一个非常强大的工具。它能够高效地处理结构化数据,并提供了丰富的函数和方法来操作、清洗和分析数据。
### 删除缺失值的行和列
在实际的数据分析过程中,缺失值是一个常见的问题。Pandas 提供了 `dropna()` 方法来删除包含缺失值的行或列。以下是一些常用的用法:
- **删除包含缺失值的行**:
```python
df.dropna(axis=0, inplace=True)
```
这条语句会直接删除所有包含 NaN 值的行[^1]。
- **删除包含缺失值的列**:
```python
df.dropna(axis=1, inplace=True)
```
这条语句会删除所有包含 NaN 值的列[^1]。
- **设置阈值**:可以通过 `thresh` 参数指定每行/列中非空值的最小数量。
```python
df.dropna(thresh=5, inplace=True)
```
上述代码保留那些至少有 5 个非空值的行。
### 高性能访问与遍历
当需要对 DataFrame 中的每一行进行操作时,Pandas 提供了几种不同的方式来访问数据。其中,`at[]` 和 `iat[]` 是用于快速访问单个元素的方法,相比 `iloc[]` 或 `loc[]` 性能更优。
例如,如果想根据某列的值对数据进行分类汇总,可以使用如下代码:
```python
sum_positive = 0
sum_negative = 0
for i in range(len(df)):
if df.at[i, 'attr'] > 0:
sum_positive += df.at[i, 'attr']
else:
sum_negative += df.at[i, 'sttr']
```
这种方法利用了 `df.at[i, label]` 的高性能特性,在循环中逐行处理数据[^2]。
### 数据筛选与条件查询
Pandas 支持通过布尔索引对数据进行筛选。例如,假设有一个名为 `df` 的 DataFrame,其中包含一列 `'age'`,想要找出所有年龄大于 30 的记录:
```python
filtered_df = df[df['age'] > 30]
```
此外,还可以结合多个条件进行筛选:
```python
filtered_df = df[(df['age'] > 30) & (df['gender'] == 'female')]
```
### 数据排序
Pandas 提供了 `sort_values()` 函数来对 DataFrame 进行排序。例如,按某一列升序排列:
```python
sorted_df = df.sort_values(by='salary')
```
也可以指定降序排列:
```python
sorted_df = df.sort_values(by='salary', ascending=False)
```
### 分组统计
使用 `groupby()` 方法可以根据某些列对数据进行分组,并执行聚合操作。例如,计算每个部门的平均工资:
```python
average_salary_by_dept = df.groupby('department')['salary'].mean()
```
### 示例:综合应用
以下是一个简单的示例,展示如何结合上述功能处理数据:
```python
import pandas as pd
# 创建示例 DataFrame
data = {
'Name': ['Alice', 'Bob', None, 'David'],
'Age': [25, None, 35, 40],
'Department': ['HR', 'IT', 'Finance', 'IT'],
'Salary': [50000, 60000, 70000, None]
}
df = pd.DataFrame(data)
# 删除缺失值
df.dropna(inplace=True)
# 筛选 IT 部门员工
it_employees = df[df['Department'] == 'IT']
# 计算各部门平均薪资
average_salary = df.groupby('Department')['Salary'].mean()
print("清理后的数据:")
print(df)
print("\nIT 部门员工:")
print(it_employees)
print("\n各部门平均薪资:")
print(average_salary)
```
---
阅读全文
相关推荐



















