質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1093閲覧

リスト内の日付と都道府県をカウントし、都道府県名の出てきた回数の多い順にcsvに出力

lokoloko

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/07 05:56

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()

このコードでは、都道府県のみしかカウントされず、日付も一緒に入れたいのですが、方法がわかりません。

どなたかお教えいただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/07 06:13

words = {('2021/12/12-20:33:49', ...} となっていますが、words は set 型のインスタンスなのでしょうか? コードを見る限り、words はタプルのリストの様に見えるのですが、、、。
can110

2022/01/07 06:21

質問とコードの内容がかみ合っていないように思います。 質問中のwordsとコード中のwordsは異なるもののようですし、コード中のnew_listは定義されていないように見えます。 また「日付と都道府県をカウントする」「日付も一緒に入れる」という内容が理解できません。 元データ、手作業でやりたいことを実現する手順、およびその結果データを具体的に示すと回答得られやすいかと思います。
lokoloko

2022/01/07 06:28

すみません、タプル型になります。
meg_

2022/01/07 10:54

> なお、時間の部分は必要ないので削除して抽出したいです。 > 日付も一緒に入れたいのですが、方法がわかりません。 どっちですか?
guest

回答1

0

日付とそれに対応した都道府県名を抽出し、出てきた都道府県名の回数の多い順にcsvに出力したいと考えています。なお、時間の部分は必要ないので削除して抽出したいです。

words がタプルのリストであると仮定すると以下の様になります。

python

1words = [ 2 ('2021/12/12-20:33:49','東京都につきました。'), 3 ('2021/12/14/-08:21:90','北海道で積雪'), 4 ('2022/1/7/-00:19:14','東京都で積雪'), 5 ('2021/12/12/-04:51:11','東京都で雨'), 6 ('2021/12/12/-04:19:36','神奈川県で友人と会った'), 7 ('2022/1/4/-09:00:23','北海道では午後から晴れ') 8] 9 10prefs = [ 11 '北海道', '青森県', '岩手県', '宮城県', '秋田県', 12 '山形県', '福島県', '茨城県', '栃木県', '群馬県', 13 '埼玉県', '千葉県', '東京都', '神奈川県', '新潟県', 14 '富山県', '石川県', '福井県', '山梨県', '長野県', 15 '岐阜県', '静岡県', '愛知県', '三重県', '滋賀県', 16 '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県', 17 '鳥取県', '島根県', '岡山県', '広島県', '山口県', 18 '徳島県', '香川県', '愛媛県', '高知県', '福岡県', 19 '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', 20 '鹿児島県', '沖縄県' 21] 22 23comp_list = [p for _, word in words for p in prefs if p in word] 24counter = Counter(comp_list) 25sorted_list = sorted(counter.items(), key=lambda x:x[1], reverse=True) 26print(sorted_list) 27 28# 29[('東京都', 3), ('北海道', 2), ('神奈川県', 1)]

このコードでは、都道府県のみしかカウントされず、日付も一緒に入れたいのですが、

「時間の部分は必要ないので削除して抽出したいです」とは矛盾する様に思えます。

投稿2022/01/07 08:13

melian

総合スコア20655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問