words = {('2021/12/12-20:33:49','東京都につきました。'),('2021/12/14/-08:21:90','北海道で積雪'),('2022/1/7/-00:19:14','東京都で積雪'),('2021/12/12/-04:51:11','東京都で雨'), ('2021/12/12/-04:19:36','神奈川県で友人と会った'),('2022/1/4/-09:00:23','北海道では午後から晴れ')}
以上のようなリストから、日付とそれに対応した都道府県名を抽出し、出てきた都道府県名の回数の多い順にcsvに出力したいと考えています。なお、時間の部分は必要ないので削除して抽出したいです。
import csv from csv import reader from collections import Counter import MeCab mecab = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd') parse = mecab.parse(str(new_list)) lines = parse.split('\n') items = (re.split('[\t,]', line) for line in lines) # # 固有名詞をリストに格納 words = [item[0] for item in items if (item[0] not in ('EOS', '', 't', 'ー') and item[1] == '名詞') and item[2] == '固有名詞'] comp_list = [] for word in words: #都道府県カウント if '北海道' in word: comp_list.append('北海道') continue elif '青森県' in word: comp_list.append('青森県') continue elif '岩手県' in word: comp_list.append('岩手県') continue elif '宮城県' in word: comp_list.append('宮城県') continue elif '秋田県' in word: comp_list.append('秋田県') continue elif '山形県' in word: comp_list.append('山形県') continue elif '福島県' in word: comp_list.append('福島県') continue elif '茨城県' in word: comp_list.append('茨城県') continue elif '栃木県' in word: comp_list.append('栃木県') continue elif '群馬県' in word: comp_list.append('群馬県') continue elif '埼玉県' in word: comp_list.append('埼玉県') continue elif '千葉県' in word: comp_list.append('千葉県') continue elif '東京都' in word: comp_list.append('東京都') continue elif '神奈川県' in word: comp_list.append('神奈川県') continue elif '新潟県' in word: comp_list.append('新潟県') continue elif '富山県' in word: comp_list.append('富山県') continue elif '石川県' in word: comp_list.append('石川県') continue elif '福井県' in word: comp_list.append('福井県') continue elif '山梨県' in word: comp_list.append('山梨県') continue elif '長野県' in word: comp_list.append('長野県') continue elif '岐阜県' in word: comp_list.append('岐阜県') continue elif '静岡県' in word: comp_list.append('静岡県') continue elif '愛知県' in word: comp_list.append('愛知県') continue elif '三重県' in word: comp_list.append('三重県') continue elif '滋賀県' in word: comp_list.append('滋賀県') continue elif '京都府' in word: comp_list.append('京都府') continue elif '大阪府' in word: comp_list.append('大阪府') continue elif '兵庫県' in word: comp_list.append('兵庫県') continue elif '奈良県' in word: comp_list.append('奈良県') continue elif '和歌山県' in word: comp_list.append('和歌山県') continue elif '鳥取県' in word: comp_list.append('鳥取県') continue elif '島根県' in word: comp_list.append('島根県') continue elif '岡山県' in word: comp_list.append('岡山県') continue elif '広島県' in word: comp_list.append('広島県') continue elif '山口県' in word: comp_list.append('山口県') continue elif '徳島県' in word: comp_list.append('徳島県') continue elif '香川県' in word: comp_list.append('香川県') continue elif '愛媛県' in word: comp_list.append('愛媛県') continue elif '高知県' in word: comp_list.append('高知県') continue elif '福岡県' in word: comp_list.append('福岡県') continue elif '佐賀県' in word: comp_list.append('佐賀県') continue elif '長崎県' in word: comp_list.append('長崎県') continue elif '熊本県' in word: comp_list.append('熊本県') continue elif '大分県' in word: comp_list.append('大分県') continue elif '宮崎県' in word: comp_list.append('宮崎県') continue elif '鹿児島県' in word: comp_list.append('鹿児島県') continue elif '沖縄県' in word: comp_list.append('沖縄県') continue continue # カウントの降順で出力(カンマ区切り) counter = Counter(comp_list) sorted_list = sorted(counter.items(), key=lambda x:x[1], reverse=True) print(sorted_list) # 抽出したもののcsv作成 with open('comp.csv', 'w', encoding='utf-8') as f: writer = csv.writer(f) writer.writerows(sorted_list) f.close()
このコードでは、都道府県のみしかカウントされず、日付も一緒に入れたいのですが、方法がわかりません。
どなたかお教えいただけないでしょうか。
words = {('2021/12/12-20:33:49', ...}
となっていますが、words は set 型のインスタンスなのでしょうか? コードを見る限り、words はタプルのリストの様に見えるのですが、、、。
質問とコードの内容がかみ合っていないように思います。
質問中のwordsとコード中のwordsは異なるもののようですし、コード中のnew_listは定義されていないように見えます。
また「日付と都道府県をカウントする」「日付も一緒に入れる」という内容が理解できません。
元データ、手作業でやりたいことを実現する手順、およびその結果データを具体的に示すと回答得られやすいかと思います。
すみません、タプル型になります。
> なお、時間の部分は必要ないので削除して抽出したいです。
> 日付も一緒に入れたいのですが、方法がわかりません。
どっちですか?