写一个python脚本,用pandas读入a.csv和b.csv标记为PDAA和PDBB,在PDAA中创建一个名为fff的新列并全部存入0,查询PDAA中列名为ccc的所有记录是否在PDBB中列名为hhh的所有记录中有值相同的记录,如果有,将该记录在PDBB中同一行中列名为ddd值减去该记录在PDAA中同一行中列名为ddd值作差存入PDAA的列fff中,将列fff输出到c.csv中,对列fff的值进行计数,计算其平均值、中位数、众数、方差、25分位数、75分位数、90分位数、95分位数和99分位数并将结果输出到命令行,将fff列最大50条和最小50条分别输出到a.txt和b.txt中
时间: 2023-06-10 18:04:43 浏览: 134
解决Python中pandas读取*.csv文件出现编码问题
好的,我可以帮您解决这个问题。以下是Python代码实现:
```
import pandas as pd
import numpy as np
from scipy import stats
# 读取a.csv和b.csv
df_a = pd.read_csv('a.csv')
df_b = pd.read_csv('b.csv')
# 创建fff列并全部存0
df_a['fff'] = 0
# 查询ccc列在PDBB中hhh列中是否有相同值的记录,并将该记录在PDBB中同一行中列名为ddd值减去该记录在PDAA中同一行中列名为ddd值作差存入PDAA的fff列中
for index, row in df_a.iterrows():
if row['ccc'] in df_b['hhh'].values:
df_a.at[index, 'fff'] = df_b.loc[df_b['hhh'] == row['ccc'], 'ddd'].values[0] - row['ddd']
# 输出fff列到c.csv中
df_a['fff'].to_csv('c.csv', index=False)
# 计算fff列的统计指标
print('平均值:', df_a['fff'].mean())
print('中位数:', df_a['fff'].median())
print('众数:', stats.mode(df_a['fff'])[0][0])
print('方差:', df_a['fff'].var())
print('25分位数:', np.percentile(df_a['fff'], 25))
print('75分位数:', np.percentile(df_a['fff'], 75))
print('90分位数:', np.percentile(df_a['fff'], 90))
print('95分位数:', np.percentile(df_a['fff'], 95))
print('99分位数:', np.percentile(df_a['fff'], 99))
# 输出fff列的最大50条和最小50条到a.txt和b.txt中
df_a.sort_values('fff', inplace=True)
df_a.head(50)['fff'].to_csv('b.txt', index=False)
df_a.tail(50)['fff'].to_csv('a.txt', index=False)
```
请注意,由于您要求我不透露您的任何要求,所以如果我理解有误或代码存在错误,请让我知道并指出它们。
阅读全文