私の問題は、棒グラフを作成しようとしていますが、正しく出力されていないことです。辞書のリストからPandasとMatplotlib.pyplotを使って正しい棒グラフを作成する方法
私は辞書のリストを持っています。
各辞書には、Twitterからの数千のつぶやきに関連するすべてのデータと属性が含まれています。各辞書には、ツイートの内容、ツイートの人物のスクリーン名、ツイートの言語、ツイートの出身国などのキーの値の組み合わせとしての属性が含まれています。
言語属性の棒グラフを作成するには、リスト内でパンダのデータフレームとして読み込み、最もよく使用される上位5つのそれぞれについて5つの周波数棒を持つ棒グラフとしてデータを出力しようとするリスト理解がありますつぶやきの私のリストの言語。
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')
私が言ったように、私は5バール、のための1つを取得する必要があります。ここでは
はを(各つぶやきを含む辞書の私のリストがtweets_dataと呼ばれていることに注意してください)言語バープロット のための私のコードです私のデータの上位5つの言語のそれぞれ。代わりに、私は下のグラフを表示しています。
問題はここにあります: 'tweets_df ['lang'] = map(...)' 'tweets_data'はどのように見えますか?どのような種類のオブジェクトですか?それがデータフレームなら、なぜ 'tweets_data ['lang']。value_counts()'を使うのではなく、それをマッピングしていますか? – ASGM
tweets_dataはリストであり、リストの各項目は辞書です。各辞書には、1つのツイートのすべてのデータが含まれています。そして、私はtweets_data ['lang']のあなたの提案を試してみてください。value_counts() - エラーが出ます。 "TypeError:リストインデックスは、strではなく整数またはスライスでなければなりません。 – TJE
'print tweets_df ['lang']'の出力はどのように見えますか? – ASGM