打开记事本,根据课件关于城市温度的距离,自己创建数据集文件,存为csv文件,要求: 有坏行,有缺失值。 读取文件,处理坏行,缺失值分别用平均值、中位值替换,需要有运行结果输出
时间: 2024-09-13 21:16:00 浏览: 51
首先,我们需要手动创建一个CSV文件,内容可以包含城市名、温度以及一些随机添加的错误数据和缺失值。例如,我们可以使用Python的pandas库来模拟这个过程:
```python
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'City': ['北京', '上海', '纽约', np.nan, '东京'],
'Temperature': [15, 28, 68, -99, 22],
# 添加坏行(非数字)
'BadValue': ['abc', 35, 'New York', 78, ''],
}
# 创建DataFrame
df = pd.DataFrame(data)
# 将DataFrame保存为CSV文件
df.to_csv('city_temperature.csv', index=False)
# 假设我们已经有了这个CSV文件,接下来处理它
# 读取文件
bad_df = pd.read_csv('city_temperature.csv')
# 处理坏行:检查是否为非数字或空字符串
good_rows = ~pd.isnull(bad_df) & (bad_df != 'nan') & bad_df.applymap(lambda x: isinstance(x, (int, float)))
clean_df = bad_df[good_rows]
# 处理缺失值:
# 使用平均值替换数值型缺失值
numeric_columns = clean_df.select_dtypes(include=[np.number]).columns
clean_df[numeric_columns] = clean_df[numeric_columns].fillna(clean_df[numeric_columns].mean())
# 使用中位数替换非数值型缺失值
non_numeric_columns = clean_df.columns.difference(numeric_columns)
clean_df[non_numeric_columns] = clean_df[non_numeric_columns].fillna(clean_df[non_numeric_columns].median())
# 输出处理后的结果
print(clean_df)
```
现在,我们已经创建了一个带坏行和缺失值的数据集文件,并进行了处理。运行这段代码后,`clean_df`就是处理过的DataFrame,包含了替换后的数据。注意,对于实际的CSV文件,上述步骤可能需要根据实际数据结构进行调整。