CSVファイルを読み込みソートして新しいCSVファイルとして保存する
関東地方の都県名と人口データのcsvファイルを読み出し、人口の少ない順にソートしてその結果を新しいcsvファイルに保存します。
やること
使った関数
- np.loadtxt : テキストファイルをndarrayとして読み出す
- ndarray.list : ndarrayをリストに変換
- list.sort : リストのソート
- .join : 要素の結合
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
準備
総務省統計局のウェブサイトにある平成27年の都道府県別人口データより関東各都県のデータを入手、以下に示す内容でファイル名'平成27年人口.csv'としてjupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。人口の単位は千人です。
茨城,2917
栃木,1974
群馬,1973
埼玉,7267
千葉,6223
東京,13515
神奈川,9126
コード
import numpy as np #numpyをインポート #平成27年人口.csvから文字列形式、カンマを区切り文字にしてndarrayに読み出す #次でsortするためにメソッドtolistでndarrayをpython標準のリストに変換 population_table=(np.loadtxt(fname="平成27年人口.csv",dtype="str",delimiter=",",)).tolist() #ソートのkeyとしてリストの2番目の要素を指定している(文字列なので整数intに変換してsortできるようにしている) population_table.sort(key=lambda x: int(x[1])) f = open('平成27年人口_sort.csv', 'w') #書き込み用ファイル'population_table_sort.csv'を開く for y in population_table: #リストpopulation_tableの各要素(県名および人口のセット)から1つづつyとして取り出す yy=','.join(y) #yの要素(例えば'群馬'と'1973')をカンマで結合してyyに代入 f.write(yy+'\n') #yyと改行記号をファイルに書き込む(1回で1行分) f.close() #書き込み用ファイル'population_table_sort.csv'を閉じる
実行結果
人口順にデータがソートされた新しいcsvファイル'平成27年人口_sort.csv'が作られます。
群馬,1973
栃木,1974
茨城,2917
千葉,6223
埼玉,7267
神奈川,9126
東京,13515
以下のサイトを参考にさせていただきました
Python公式 >> ソート HOW TO
Numpy公式 >> numpy.loadtxt
note.nkmk.me >> NumPyでCSVファイルを読み込み・書き込み(入力・出力)