初心者でも簡単!pythonでcsvファイルの処理方法(サンプルコード付)

スポンサーリンク
Python/DeepLearning

みなさんこんにちは!みやしんです。

今回は仕事でも役立つ「pythonを使ったcsvファイルの処理方法」をご紹介したいと思います。

特にデータ解析をしたい場合、データがcsvファイルで保存してあることって結構あると思います。

それでは早速始めていきましょう!

スポンサーリンク

データセットの入手

プログラミングの練習したいけどデータがない。。。。ってことありますよね!

そんな人のために、まずはオープンデータの入手先をご紹介します。

DATA GO.JP  データカタログサイト

日本のオープンデータカタログサイトです。
中央省庁が保有するデータや様々な分野の統計データを入手することができます。
ファイル形式毎にデータを分けて、検索もできるのでとても扱いやすくておススメです。

DATA GO.JP データカタログサイト

今回は、このサイトから都道府県別の人口推移データを扱っていきたいと思います。

「4_年次・都道府県・性別人口_(1) 総数」というデータです。

ダウンロードすると「mi040001.csv」というファイルがダウンロードされます。

【リンク先】人口動態調査_人口動態統計_確定数_人口_年次_2019年

ファイルをダウンロードして開くと、こんな感じのデータが入っています。

今回、使いやすくするために注意事項などが書いてある1~14行目までを消して、ファイル名を「population_data.csv」に変えて使いたいと思います。

こんな感じででデータのリストだけにしました。

では、お待たせしました!pythonに入っていきたいと思います。

事前準備

事前準備として、「data_folder」という名前のフォルダーを作成しました。

この中にpopulation_data.csvを入れて、pythonスクリプトも同じフォルダーに入れていきたいと思います。

pandasでcsvファイルを読み込む

csvファイルを読み込んで処理するためにpandasというライブラリを使います。pandasではread_csv

()というメソッドを使います。また、今回読み込む「4_年次・都道府県・性別人口_(1) 総数(population_data.csv)」は1行目がヘッダー行なので、それを明示するためにheader=0を入力します。先頭行を0として数えます。

ファイル名:csv_read.csv

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
# df = pd.read_csv('ファイル名.csv', encoding='データの読み込み形式', header=ヘッダー行)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# 読み込んだデータを表示する
print(df) 

Anaconda Powershell Promptで実行します。

こんな感じでcsvを読み込んで表示できました。

「df.T」で行と列を入れ替える

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# df.Tで行と列を入れ替える
print(df.T) 

Anaconda Powershell Promptで実行します。

縦軸に年、横軸に都道府県となり、行と列が入れ替わりました。

「de.shape」で行数と列数を表示

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# 行数と列数を表示
print(df.shape) 

Anaconda Powershell Promptで実行します。

(48, 22)と表示されました。48が行数、22が列数です。

「df[‘列名’]」でその列のデータを表示

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# 「df['列名']」でその列のデータを表示
print(df['2005']) 

Anaconda Powershell Promptで実行します。

「2005」の列がピックアップされました。

【発展版】1列分の合計を求める

上記の2005の列の総和を求めたいと思います。

 

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# 2005年の列のデータをsum関数で合計して表示
population2005 = sum(df['2005'])
print(f'2005年列の人口の合計={population2005}')

ここで、

print(f'2005年列の人口の合計={population2005}')

の部分は、文字列の前にfをおいて{変数}とすることで、文字列の中でも変数を代入できる便利な機能です。

よく出てくるので覚えておくと良いと思います。

Anaconda Powershell Promptで実行します。

2005年列の人口の合計=252409804 と表示されました。

読み込んだcsvファイルを1行ずつ処理する

続いてはデータを1行ずつ処理していく方法をご紹介します。

まずは、valuesを利用するとデータをリストとして取得できます。

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# valuesを使うとデータをリストで取得可能
print(df.values) 

Anaconda Powershell Promptで実行します。

このようにリストで取得できますので、これをfor文を使って処理していきます。

# pandasをインポート
import pandas as pd

# csvファイルを読み込んでdfへ入れる(DataFrameオブジェクト)
df = pd.read_csv('population_data.csv', encoding='shift-jis', header=0)

# 1935年の人口を設定
popu1935 = 0

for row in df.values:
    print(row)
    # 1935年の人口はrow[1]
    popu1935 += int(row[1])

print(f'1935列の人口の合計は:{popu1935}人です') 

Anaconda Powershell Promptで実行します。

・・・

・・・・・

138508296人という計算結果を出すことができました。

csvファイルを書き込む

pandasを使ってcsvファイルへ書き込むことも可能です。

csvファイルを書き込むときにOS環境に合った文字コードを取得する必要があります。その時、localeモジュールのgetpreferredencoding()を使います。

今回は人口のデータは使わず、オリジナルでデータを作成します。

import pandas as pd
import locale

# 適切な文字コードを取得
encoding = locale.getpreferredencoding()

# 書き込むデータを辞書として作成
data = {'SMAPメンバー':['中居正広','木村拓哉','稲垣吾郎','草彅剛','香取慎吾'],
    '年齢':[48,48,47,46,44],
    '出身地':['神奈川','東京','東京','埼玉','神奈川'],
    '血液型':['A','O','O','A','A']
    }

# 上記のリストをデータフレームに変換
df = pd.DataFrame(data)
# データフレームをcsvファイルへ書き込み
df.to_csv('SMAP_member.csv', encoding=encoding) 

実行するとフォルダ内にSMAP_member.csvが作成されます。

SMAP_member.csvを開くとこのようにリストができています。

上手くできました!

今回はpythonを使ってcsvファイルを読み込んだり、書き込んだりする方法をご紹介しました。

是非、実際にチャレンジしてみてくださいね!

Python、AI、機械学習について、初心者の方、プログラミングスクールに興味のある方、E資格を取得したい方、更に実践的なスキルを磨きたい方は下記の記事もご参考ください。

pandasについてもっと勉強したい方は書籍での勉強もおススメです。

Pythonによるデータ分析入門 第2版-Numpy、Pandasを使ったデータ処理

合わせて読みたい

pythonのMatplotlibを使った図形描画について解説!

物体検出やファインチューニングにチャレンジしてみたい方はこちら!

ロト6の当選番号を予想してくれるAIを作成。csvファイルの読み込みもあります。

Python/DeepLearning
スポンサーリンク
記事が良かったらSNSでシェアを宜しくお願いします!
みやしんをフォローすると役立つ情報がいっぱいにゃ!
スポンサーリンク

コメント

タイトルとURLをコピーしました