Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

CSVファイルを読み込みソートして新しいCSVファイルとして保存する

関東地方の都県名と人口データのcsvファイルを読み出し、人口の少ない順にソートしてその結果を新しいcsvファイルに保存します。

やること
  • csvファイルをndarrayとして読み出す
  • ndarrayをpython標準のリスト形式に変換
  • リストを人口の少ない順にソート
  • 新しい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ファイルを読み込み・書き込み(入力・出力)

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村