【发布时间】:2017-10-19 14:51:15
【问题描述】:
我的问题是我正在尝试创建条形图,但输出不正确。
我有一个字典列表。
每个字典都包含与来自 Twitter 的数千条推文相关的所有数据和属性。每个字典都包含作为键值组合的属性,包括推文内容、发推文的人的屏幕名称、推文的语言、推文的来源国等等。
要为语言属性创建条形图,我有一个列表理解,它尝试在列表中读取为 Pandas 数据框,并将数据输出为条形图,其中前 5 种最常用语言中的每种语言都有 5 个频率条在我的推文列表中。
这是我的语言条图代码(请注意,我包含每条推文的字典列表称为 tweets_data):
tweets_df = pd.DataFrame()
tweets_df['lang'] = map(lambda tweet: tweet['lang'], tweets_data)
tweets_by_lang = tweets_df['lang'].value_counts()
fig, ax = plt.subplots()
ax.tick_params(axis='x', labelsize=15)
ax.tick_params(axis='y', labelsize=10)
ax.set_xlabel('Languages', fontsize=15)
ax.set_ylabel('Number of tweets' , fontsize=15)
ax.set_title('Top 5 languages', fontsize=15, fontweight='bold')
tweets_by_lang[:5].plot(ax=ax, kind='bar', color='red')
【问题讨论】:
-
问题出在这里:
tweets_df['lang'] = map( ... )。tweets_data是什么样的?它是一个什么样的对象?如果它是一个数据框,为什么要映射它而不是只使用tweets_data['lang'].value_counts()? -
tweets_data 是一个列表,列表中的每一项都是一个字典。每个字典都包含一条推文的所有数据。当我尝试您对 tweets_data['lang'].value_counts() 的建议时,我收到错误“TypeError:列表索引必须是整数或切片,而不是 str。”
-
print tweets_df['lang']的输出是什么样的? -
0 en 1 en 2 en 3 en 4 pt 5 sp 6 en 7 und 8 en 9 en 10 en ... 530 en 531 sp 532 en 533 en 534 it 535 en 536 pt 537 en
-
嗯,我还不清楚为什么这不起作用。我已经制作了一些示例数据并自己尝试过,看起来还不错。如果你用这个测试列表替换
tweets_data会发生什么:tweets_data = [{'lang': 'en'}, {'lang': 'pl'}, {'lang': 'en'}]。
标签: python pandas dictionary twitter list-comprehension