pandas处理csv 分组并排序 归一化 筛选符合条件的分组 并保存到csv

这算是一个用pandas处理csv的demo,有助于理解DataFrameGroupBy的数据结构。
demo写得不好(有两个输出文件,其中一个是临时加的,典型的缝合怪代码),但其中包含了不少常见的操作,仅供参考。
原数据集地址:https://snap.stanford.edu/data/soc-sign-bitcoin-otc.html

import sys
import pandas as pd

infile = sys.argv[1]
outfile = sys.argv[2]

df = pd.read_csv(infile,encoding="utf-8")
df = df.sort_values(by="time",ascending=True)
df['rating'] = (df['rating']-df['rating'].min())/(df['rating'].max()-df['rating'].min()) #min-max归一

n = 300
actions = 0

#第一部分:将分组结果写入文件(从DataFrameGroupBy中的DataFrame来看)
gp = df.groupby(['target'])
#df2 = pd.DataFrame(columns=['source','target','rating','time'])
df2 = pd.DataFrame()
avglist = []
#DataFrameGroupBy由多个元组组成,每个元组内有组名和组(DataFrame)
for gpname,group in gp:
	if len(group) >= n:#筛选出结果较多的点
		group=group.iloc[0:n,:]#截断多余的行
		df2=pd.concat([df2,group],ignore_index=True)
		avg=group['rating'].mean(axis=0)
		avglist.append(avg)
		actions += 1
		#if actions == 0:
		#	break;
print(actions)
df2.to_csv(outfile,index=False)
df3 = pd.DataFrame(data=avglist,columns=['average'])
df3.to_csv('avg.csv',index=False)

#第二部分:获得关于分组操作的结果(从DataFrameGroupBy总体来看)
#df3 = df.groupby(['target']).size()
#print(type(df3))
#print(df.groupby(['target']).size().values)
#print(df.groupby(['target']).size().index)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值