python数据分析-数据清洗操作代码
- 计算机科学
- 2024-01-09
- 366热度
- 0评论
0.中文显示
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文显示
# plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False # 解决减号显示问题
1.填充零值
只填充两列
df_filled = df.fillna(0, subset=['列名1', '列名2'])
全部填充
df_filled = df.fillna(0)
2.删除某一列
# 删除列
df = df.drop('列名', axis=1)
#多删除几列
df = df.drop(['列1','列2'],axis=1)
# 删除第一列
df = df.drop(df.columns[0], axis=1)
3.读取、保存excel表格
df = pd.read_excel('name.xlsx')
df = pd.read_csv('name.csv')
df.to_excel('savename.xlsx')
df.to_csv('savename.csv')
- 读取列的名称
df.columns
#print all and dawing pictures
for column in outdf.columns[2:]:
plt.figure(figsize=(10, 5))
plt.plot(df['环号'], outdf[column])
plt.title(f'{column}')
plt.xlabel('环号')
plt.ylabel(column)
plt.show()
- plt.figure 图中的字体大小修改
# 添加标题和轴标签,并设置字体大小为 14
plt.title('Title', fontsize=14)
plt.xlabel('X Label', fontsize=14)
plt.ylabel('Y Label', fontsize=14)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
#旋转角度
plt.xticks(rotation=45)
plt.yticks(rotation=90)
- 拼接两个表格
pd.concat函数在默认情况下会自动合并相同的列
# 使用 concat 函数按照索引拼接表格
result = pd.concat([df1, df2])
# 使用 concat 函数按照索引拼接多个表格
result = pd.concat([df1, df2, df3])
# 使用 merge 函数根据 Key 列拼接表格
result = pd.merge(df1, df2, on='Key')
# 使用 merge 函数根据 Key 列拼接多个表格
result = pd.merge(pd.merge(df1, df2, on='Key'), df3, on='Key')
注意一下拼写错误:!
AttributeError: module 'pandas' has no attribute 'contact'
- 计算df的平均值、最大值、最小值
# 计算每一列的平均值
mean_values = df.mean()
print("平均值:")
print(mean_values)
# 计算每一列的最大值
max_values = df.max()
print("最大值:")
print(max_values)
# 计算每一列的最小值
min_values = df.min()
print("最小值:")
print(min_values)
- 箱型图的绘制
#小提琴图
sns.violinplot(data=df, x='A')
#箱型图
sns.boxplot(data=df, x='A')
- 皮尔逊相关系数
# 计算相关系数
correlation_matrix = df.corr()
# 绘制皮尔逊相关系数热力图
plt.figure(figsize=(50,40))
sns.heatmap(correlation_matrix, annot=True, cmap='RdYlGn')
plt.title('Pearson Correlation Coefficients')
plt.show()
- 按环号进行分组,计算中位数,并合并其他列的值
import pandas as pd
import numpy as np
# 创建示例 DataFrame
df = pd.DataFrame({'环号': [1, 1, 2, 2, 3, 3],
'滚动角': [10, 20, 30, 40, 50, 60],
'前盾体俯仰角': [100, 200, 300, 400, 500, 600],
'前盾水平偏差': [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
'前盾垂直偏差': [0.1, 0.2, 0.3, 0.4, 0.5, 0.6]})
# 按环号进行分组,计算中位数,并合并其他列的值
df_merged = df.groupby('环号').median().reset_index()
print(df_merged)
output:
环号 滚动角 前盾体俯仰角 前盾水平偏差 前盾垂直偏差
0 1 15 150 1.5 0.15
1 2 35 350 3.5 0.35
2 3 55 550 5.5 0.55
采用上0.25位数进行代替:
df_merged = df.groupby('环号').apply(lambda x: x.fillna(x.quantile(0.25))).reset_index(level=0, drop=True).reset_index()
采用非零值的平均数代替:
# 按环号分组并计算每列的非零值平均数
nonzero_means = df.replace(0, np.nan).groupby('环号').mean()
# 重置索引
nonzero_means = nonzero_means.reset_index()
# 合并环号和非零值平均数到一个新的 DataFrame
df_merged = pd.merge(df['环号'].drop_duplicates(), nonzero_means, on='环号')
df_merged.to_excel('依据环号合并后用非零平均数代替的值.xlsx')
- df中的空缺值处理
# 删除包含缺失值的行
df.dropna(axis=0, inplace=True)
# 删除包含缺失值的列
df.dropna(axis=1, inplace=True)
# 用特定值填充缺失值
df.fillna(value=0, inplace=True)
# 用前一个非缺失值填充缺失值
df.fillna(method='ffill', inplace=True)
# 用后一个非缺失值填充缺失值
df.fillna(method='bfill', inplace=True)
# 用均值填充缺失值
df.fillna(df.mean(), inplace=True)
# 用中位数填充缺失值
df.fillna(df.median(), inplace=True)
# 使用线性插值填充缺失值
df.interpolate(method='linear', inplace=True)
# 使用多项式插值填充缺失值
df.interpolate(method='polynomial', order=2, inplace=True)
12.控制pd的显示格式
# 设置 Pandas 的显示选项,控制浮点数的显示格式
pd.set_option('display.float_format', '{:.2f}'.format)