用Python统计词频
147852 哈哈 不好看
123456 啊哈
147852 哈哈
147852 嗯嗯 二刷
147852 略略略 人性
123456 尴尬
147963 人性 极端
123456 啊哈
147963 不好看
统计每个标签在多少本图书中出现过,也就是统计每个标签对应的图书编号的
数量。如果一个词汇在同一个图书编号中出现N次,也只能记作1次,因为图书
编号只有一个。所以上面的数据经过处理后结果应该是
(如果能递增或递减排序就更好了,不实现也没事)
人性 3
尴尬 1
啊哈 1
哈哈 1
不好看 2
嗯嗯 1
二刷 1
略略略 1
极端 1
跪求Python大神帮忙 展开
# astr.replace("\n", "")
slist = list(astr.split("\t"))
alist = []
[alist.append(i) for i in slist if i not in alist]
alist[-1] = alist[-1].replace("\n", "")
return alist
if __name__ == "__main__":
code_doc = {}
with open("test_data.txt", "r", encoding='utf-8') as fs:
for ln in fs.readlines():
l = statistics(ln)
for t in l:
if t not in code_doc:
code_doc.setdefault(t, 1)
else:
code_doc[t] += 1
for keys in code_doc.keys():
print(keys + ' ' + str(code_doc[keys]))
def statistics(astr):
# astr.replace("\n", "")
slist = list(astr.split("\t"))
alist = []
[alist.append(i) for i in slist if i not in alist]
alist[-1] = alist[-1].replace("\n", "")
return alist
if __name__ == "__main__":
code_doc = {}
with open("test_data.txt", "r", encoding='utf-8') as fs:
for ln in fs.readlines():
l = statistics(ln)
for t in l:
if t not in code_doc:
code_doc.setdefault(t, 1)
else:
code_doc[t] += 1
for keys in code_doc.keys():
print(keys + ' ' + str(code_doc[keys]))
import pandas as pd
a='''123456 人性 尴尬 啊哈
147852 哈哈 不好看
123456 啊哈
147852 哈哈
147852 嗯嗯 二刷
147852 略略略 人性
123456 尴尬
147963 人性 极端
123456 啊哈
147963 不好看'''
arr=[[x] for x in a.split('\n')]
df=pd.DataFrame(arr,)
df1=df[0].str.split('\t',expand=True);df1.columns='id a b c'.split()
df2=df1.set_index('id').stack().reset_index()
df2.drop_duplicates(inplace=True)
print(df2[0].value_counts())
## 源文件txt.txt,输出文件txt_out.txt
import pandas as pd
df=pd.read_csv(r'd:/txt.txt',encoding='gbk',header=None)
df1=df[0].str.split('\t',expand=True);df1.columns='id a b c'.split()
df2=df1.set_index('id').stack().reset_index()
df2.drop_duplicates(inplace=True)
df2[0].value_counts().to_csv(r'd:/txt_out.txt',header=None,sep='\t')
您好,非常感谢。代码很好用,只是当每一行的标签过多(远远超过3个标签)以及需要处理的数据过大(需要处理1000多万行)时,就会显示memory error(我看了是可能是内存不够的问题)所以想请问还有更适合大规模数据的版本吗?