提取数据csv文件并在python中写入另一个文件

2024-09-30 22:20:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个Python应用程序来读取CSV输入文件(应用程序集.csv)并生成一个输出文件,计算每个用户的应用程序使用频率。输入文件的第一列包含用户id(user_id),第二列包含应用程序的名称(app_name)。从应用程序集.csv,我必须计算每个用户的应用程序使用频率,以生成app_Rank,并转换为名为的新数据集appsIndividualUsage.csv应用程序包含以下列:用户标识;应用名称;应用等级。在

例如,如果应用程序集.csv有以下事件

a  facebook
a  facebook
a  linkedin
b  google
b  yahoo
b  yahoo

那么appsIndividualUsage.csv应用程序将是:

^{pr2}$

以下是我正在努力解决的代码:

import csv 
with open("C:\\Users\\anne\\Desktop\\appsUsage.csv", mode='r') as f_in,
open("C:\\Users\\anne\\Desktop\\appsIndividualUsage.csv", mode='w', newline='')
as f_out:
        f_reader = csv.reader(f_in, dialect=csv.excel_tab)
        f_writer = csv.writer(f_out, dialect=csv.excel_tab)
         for line in reader:
             if line is equal then write it in writer and add a row of frequency

我完全不知道怎么写最后一行代码。在


Tags: 文件csv代码用户in名称idapp
1条回答
网友
1楼 · 发布于 2024-09-30 22:20:01

Python为此提供了一个^{}。它是一个类似字典的对象,可以用来计算添加到其中的键。在本例中,字典的键是用户名和应用程序的组合。在

首先从输入的CSV文件中读取所有条目并对其进行计数。然后将排序后的计数写入输出CSV文件,如下所示:

from collections import Counter    
import csv 

usage_counts = Counter()

with open('appsUsage.csv') as f_in:
    f_reader = csv.reader(f_in, dialect=csv.excel_tab)

    for user, application in f_reader:
        usage_counts[(user, application)] += 1

with open("appsIndividualUsage.csv", mode='w', newline='') as f_out:
    f_writer = csv.writer(f_out, dialect=csv.excel_tab)

    for (user, application), count in sorted(usage_counts.items(), key=lambda x: (x[0], x[1])):
        f_writer.writerow([user, application, count])

这将为您提供如下CSV文件:

^{pr2}$

如果不允许使用Counter(),则需要使用普通字典,并将1添加到任何现有的键中。在

相关问题 更多 >