大きなReviewIDを持つ辞書(10,000以上のエントリ)があります。辞書には2つのキーがあり、1つはReviewID#で、2つ目はレビューの言語です。辞書内のさまざまな文字列のインスタンス数をカウントする方法
私の任務は、各言語の総レビュー数を計算して棒グラフで表示することです。
import pandas as pd
import csv
import matplotlib.pyplot as plt
import sys
RevDict = {}
with open('ReviewID.txt','r') as f:
for line in f:
a,b = line.split(":")
RevDict[a] = str(b)
これは、このように見えるの辞書になり:
私の考え、レビューIDが1列であることをデータフレームに辞書を変換することだった言語は、第二のものカラム。その後、カウンタを使用して行を繰り返し、各言語の最終的なカウントで終了します。これは簡単に棒グラフに変換することができます。
残念ながら、私はこれを行う方法を理解できません。
また、よりpythonのアプローチは、データフレームを作成するステップを経るのではなく、辞書自体の中の各文字列のインスタンスの数を単純に数えることだと考えられます。私はこれを試してみました:
from collections import Counter
Counter(k['b'] for k in data if k.get('b'))
それは、次のエラー投げている:
はAttributeError: 'strの' オブジェクトは、あなたのfor k in data
ループで
collections.Counterを使用して辞書法で働いていました。私は今、降順でインスタンスの数を持つ様々な言語をリストした辞書のように見える出力を持っています。最後のステップは、これを棒グラフにして、各言語が表すレビューの割合を示す必要があることです。私はこれがmatplotlib関数であると仮定しますが、このグラフを作成するために辞書からデータを引き出す方法は不明です。 –
@AndrewSmith、カウンターは順序付けされていません。つまり、キーの特定の順序を数えることはできません。私の答えの一番下にあるmatplotlibの例を見てください。 – 7stud