首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中计算堆栈溢出数据转储的CSV文件中特定标记的频率

如何在Python中计算堆栈溢出数据转储的CSV文件中特定标记的频率
EN

Stack Overflow用户
提问于 2022-03-07 02:13:07
回答 1查看 181关注 0票数 0

我最近从stackoverflow.com-Posts.7z下载了堆栈交换数据转储文件。在提取.7z文件时,我得到了一个Posts.xml文件,我使用GitHub上的"stackexchange-xml-转换器“工具将该文件转换为Posts.csv文件。Posts.csv文件包含在整个堆栈溢出网站上发布的所有帖子。Posts.csv文件的总大小为67 GB,因此在Microsoft、Visual、记事本等中打开它太大了。

CSV文件中的每个(除了第一行,即标题行)都对应于与一个特定post关联的所有数据。例如,下面是与每个帖子关联的一些数据类别:TitleTagsContentLicenseViewCountCommentCountCreationDate等等。每个数据类别都是CSV文件中自己的。下面是一幅关于它的样子的图片:

我的问题是,我试图计算Posts.csv文件中特定感兴趣的标记的频率,给出一个列表。例如,假设Python中有以下列表:

代码语言:javascript
复制
tagsOfInterest = ['version-control', 'git', 'git-merge', 'bash', 'microservices']

仅在CSV文件的Tags 中,我想计算标记version-control出现多少次、标记git出现多少次、标签git-merge出现多少次等等……

我一直在努力这样做,因为您会注意到,Tags列中的每一行都被格式化为一个连续字符串,每个不同的标记词都只有一个<>分隔。例如,在第一行中,一个帖子被标记为<version-control><projects-and-solutions><monorepo>

我最初的尝试是先读取Posts.csv文件,然后将Tags列中的每一行添加到列表中,如下所示:

代码语言:javascript
复制
from pandas import *
import csv

# Read data
data = read_csv("Posts.csv")

# Add each row in the "Tags" column to a list:
tags_col = data['Tags'].tolist()

然后我的想法就是标记每个标签词。但是,Posts.csv文件太大了,所以我的计算机在创建列表时内存不足!

作为,我的问题是:给出了一个感兴趣的标签列表,例如,tagsOfInterest = ['version-control', 'git', 'git-merge', 'bash', 'microservices'],如何从Posts.CSV文件的Tags列中计算列表中每个元素的频率?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 02:24:26

代码语言:javascript
复制
import csv
from collections import Counter

counts = Counter()
for row in csv.reader(open('Posts.csv')):
    for tag in row[1].lstrip('<').rstrip('>').split('><'):
        counts[tag] += 1
print(counts)

如果需要,可以使用DictReader,使用row['Tags']而不是row[1]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71375771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档