python使用matplotlib画词频分析的图_使用pandas和matplotlib的词频

本文介绍如何使用Python的collections.Counter和pandas处理CSV文件,提取作者名称并创建直方图。示例中处理了作者名中含有空格的情况,通过Counter计算每个作者的书籍数量,并用matplotlib展示结果。
摘要由CSDN通过智能技术生成

使用collections.Counter创建直方图数据,并遵循给定的示例here,即:from collections import Counter

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# Read CSV file, get author names and counts.

df = pd.read_csv("books.csv", index_col="id")

counter = Counter(df['author'])

author_names = counter.keys()

author_counts = counter.values()

# Plot histogram using matplotlib bar().

indexes = np.arange(len(author_names))

width = 0.7

plt.bar(indexes, author_counts, width)

plt.xticks(indexes + width * 0.5, author_names)

plt.show()

使用此测试文件:$ cat books.csv

id,author,title,language

1,peter,t1,de

2,peter,t2,de

3,bob,t3,en

4,bob,t4,de

5,peter,t5,en

6,marianne,t6,jp

上面的代码创建以下图形:

编辑:

您添加了一个辅助条件,其中author列可能包含多个空格分隔的名称。以下代码处理此问题:from itertools import chain

# Read CSV file, get

df = pd.read_csv("books2.csv", index_col="id")

authors_notflat = [a.split() for a in df['author']]

counter = Counter(chain.from_iterable(authors_notflat))

print counter

对于本例:$ cat books2.csv

id,author,title,language

1,peter harald,t1,de

2,peter harald,t2,de

3,bob,t3,en

4,bob,t4,de

5,peter,t5,en

6,marianne,t6,jp

它印出来了$ python test.py

Counter({'peter': 3, 'bob': 2, 'harald': 2, 'marianne': 1})

请注意,此代码只起作用,因为字符串是可iterable的。

这段代码基本上没有panda,除了引导DataFramedf的CSV解析部分。如果需要熊猫的默认绘图样式,那么mentioned线程中也有一个建议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值