私は記事のリストを含むパンダデータフレームを持っています。このデータフレーム内の列の1つは、キーワードのリストである。たとえば、キーワード列には、各セルに[ドロップ、右、状態、法則]のようなリストが含まれています。データフレーム内のリスト内での出現回数の計算
私の最終的な目標は、毎日の各ユニークワードの出現回数を数えることです。私が抱えている課題は、キーワードをリストから外して、それが発生した日付に合わせることです。 ...これが最も論理的な第一歩でもあると仮定します。
現在、私は以下のコードで解決策を示していますが、私はPythonには新しく、これらのことを考えてもExcelの考え方ではまだ考えています。以下のコードは動作しますが、非常に遅いです。これを行うには速い方法がありますか?
# Create a list of the keywords for articles in the last 30 days to determine their quantity
keyword_list = stories_full_recent_df['Keywords'].tolist()
keyword_list = [item for sublist in keyword_list for item in sublist]
# Create a blank dataframe and new iterator to write the keyword appearances to
wordtrends_df = pd.DataFrame(columns=['Captured_Date', 'Brand' , 'Coverage' ,'Keyword'])
r = 0
print("Creating table on keywords: {:,}".format(len(keyword_list)))
print(time.strftime("%H:%M:%S"))
# Write the keywords out into their own rows with the dates and origins in which they occur
while r <= len(keyword_list):
for i in stories_full_recent_df.index:
words = stories_full_recent_df.loc[i]['Keywords']
for word in words:
wordtrends_df.loc[r] = [stories_full_recent_df.loc[i]['Captured_Date'], stories_full_recent_df.loc[i]['Brand'],
stories_full_recent_df.loc[i]['Coverage'], word]
r += 1
print(time.strftime("%H:%M:%S"))
print("Keyword compilation complete.")
私は各単語が自分の行であると、私は単に.groupby()を使って毎日の発生数を把握しています。
# Group and count the keywords and days to find the day with the least of each word
test_min = wordtrends_df.groupby(('Keyword', 'Captured_Date'), as_index=False).count().sort_values(by=['Keyword','Brand'], ascending=True)
keyword_min = test_min.groupby(['Keyword'], as_index=False).first()
現在、このリストには約10万語があり、そのリストを実行するには1時間ほどかかります。私はそれを行うより速い方法についての考えが大好きです。
wordtrends_df = pd.melt(pd.concat((stories_full_recent_df[['Brand', 'Captured_Date', 'Coverage']],
stories_full_recent_df.Keywords.apply(pd.Series)),axis=1),
id_vars=['Brand','Captured_Date','Coverage'],value_name='Keyword')\
.drop(['variable'],axis=1).dropna(subset=['Keyword'])
以下の小さな例で説明:
これは完璧に、はるかに速く動作します。助けてくれてありがとう。溶融はこの初心者にとって新しいものです。 – bengen343