pandasでcsvファイルを読み込み/書き込みをする方法

Pandas

 pandasはpythonでデータ分析をサポートするモジュールです.pandasでCSVファイルを読み込むとデータフレームに変換されます.データフレームにすることで複数のデータフレーム同士の結合や要素値の演算をすることができます.

 スポンサーリンク

スポンサーリンク

csvファイルについて

 csvファイルは,値を[ , ]コンマで区切ったテキストファイルです.エクセルやデータのやり取りで使用される事が多いファイルです.

[sample]

Item,price,unit
AA,1000,10
BB,6000,5
CC,7000,7

csvファイルを読み込む方法

csvファイルの読み込みはpandas.read_csv()関数より行います

pandas.read_csv()関数書式

pandas.read_csv(filepath,index_col= False,skiprows=None,nrows= None,names= None,dtype= None,encoding = None )

引数概要
filepathファイルまでのパス
index_colデフォルトFalse
DataFrameの列インデックスラベル名を指定します.
skiprowsスキップ する行数を指定します.
nrows先頭から読み取るファイルの行数を指示
names列先頭カラムラベルをリスト形式で指示します.
dtypeデータ又は列の型式を指示して読み込みます.
encoding読み取り/書き込み時にUTFに使用するエンコード(例:「utf-8」)

CSVファイルを読み込む手順

pandasをインポートします.

import pandas as pd

CSVを読み込む際は

df=pd.read_csv("csvファイル名")

csvファイルを読み込みます

下記のcsvファイルをpythonの実行ファイルと同じフォルダーに置いておきます.(これ以降のサンプルプログラムでも同じです)

[sample.csv]

Item,price,unit
AA,1000,10
BB,6000,5
CC,7000,7

csvファイルを読み込みます.

[IN]

import pandas as pd
df=pd.read_csv("sample.csv")
print(df)

[OUT]

  Item  price  unit
0   AA   1000    10
1   BB   6000     5
2   CC   7000     7

 csvファイルの列の先頭Item price unitがデータフレームのカラムラベルに変換されました.インデックスラベルは0から連番で作られているのが解ります.

ヘッダーが無い場合

 ファイルの先頭行からデータが始まる場合について,そのまま読み込むとファイルの1行目がカラムラベルとして読みこまれてしまいます.引数にheader=Noneを渡すことで1行目からデータとして取り扱う事ができます.

[sample.csv]

AA,1000,10
BB,6000,5
CC,7000,7

[IN]

import pandas as pd
df=pd.read_csv("sample.csv",header=None)
print(df)

[OUT]

0  AA  1000  10
1  BB  6000   5
2  CC  7000   7

 先頭行からデータとして読み込む事が出来ました.

カラム名を付けて読み込み

先程読み込んだデータフレームにはカラム名がありません.引数のnamesでカラム名を付けて読み込むことができます.先程と同じファイルで試してみます.

[sample.csv]

AA,1000,10
BB,6000,5
CC,7000,7

[IN]

import pandas as pd
colums=["Item"," price","unit"] #カラムリスト
df=pd.read_csv("sample.csv",header=None,names=colums)
print(df)

[OUT]

  Item   price  unit
0   AA    1000    10
1   BB    6000     5
2   CC    7000     7

 ヘッダーの無いファイルに後付けでカラム名をつけることができました.

インデックスラベルを付けて読み込み

 デフォルトで読み込むと,インデックスラベルは0番から連番で生成されます.引数にindex_colを渡すことで指定した列をインデックラベルにできます.

[sample.csv]

Item,price,unit
AA,1000,10
BB,6000,5
CC,7000,7

[IN]

import pandas as pd
colums=["Item"," price","unit"]
df=pd.read_csv("sample.csv",index_col=[0])
print(df)

[OUT]

      price  unit
Item
AA     1000    10
BB     6000     5
CC     7000     7

先頭行をインデックスラベルにすることができました.

任意の行を飛ばして読み込む

 先頭から任意の行を飛ばして読む場合は,引数skiprowsに値を渡すことで可能です.

[sample.csv]

1, ##
2, ##
3, ##
city,Item,price
izumo,zenzai,18140
shimonoseki,fugu,21790
okayama,kibidango,16600

先頭3行は不要のためskiprows=3として読み飛ばします.

[IN]

import pandas as pd
colums=["Item"," price","unit"]
df=pd.read_csv("sample.csv",skiprows=3)
print(df)

[OUT]

          city       Item  price
0        izumo     zenzai  18140
1  shimonoseki       fugu  21790
2      okayama  kibidango  16600

不要な行数を読み飛ばせたことが解ります.

数行だけ読み込む

 ファイルサイズが大きい場合などで数行だけ読み込む事があります.引数nrowsに値を渡す事で数行だけ読み込むことができます.

[sample.csv]

city,Item,price
izumo,zenzai,18140
shimonoseki,fugu,21790
okayama,kibidango,16600
nagoya,ebifurai,10560
sendai,zundamochi,11410

 先頭から4行を読み込むためnrows=4にして読み込みます.

[IN]

import pandas as pd
df=pd.read_csv("sample.csv",nrows=4)
print(df)

[OUT]

          city       Item  price
0        izumo     zenzai  18140
1  shimonoseki       fugu  21790
2      okayama  kibidango  16600
3       nagoya   ebifurai  10560

 先頭4行だけ読み込めました.

指定した列だけ読み込む 

 今までは列全体を読み込んでいましたが,引数usecolsでリスト形式で列番号か列名を指定することで,指定した列を読み込む事ができます.

[sample.csv]

A0,A1,A2,A3,A4
B0,B1,B2,B3,B4
C0,C1,C2,C3,C4
D0,D1,D2,D3,D4

列番号1と3をを指示して読み込みます.

[IN]

import pandas as pd
df=pd.read_csv("sample.csv",usecols=[1 , 3])
print(df)

[OUT]

   A1  A3
0  B1  B3
1  C1  C3
2  D1  D3

行名を指示してA0とA3を読み込みます.

[IN]

import pandas as pd
df=pd.read_csv("sample.csv",usecols=["A0" , "A3"])
print(df)

[OUT]

   A0  A3
0  B0  B3
1  C0  C3
2  D0  D3

CSVファイルの書き出し

データフレームを書き出すにはpandas.DataFrame.to_csv(“ファイル名”)関数より行います.
リストからデータフレームを作成してcsvファイルに書き出します.

[IN]

import pandas as pd
a_list=[[1,2],
      [3,4]]
df = pd.DataFrame(a_list) #データフレームの作成

df.to_csv("test.csv") #csvファイルを書き出し

[OUT 出力されたtest.csvファイル]

,0,1
0,1,2
1,3,4

簡単にデータフレームをcsv形式で出力することができました.

トップへ戻る

 スポンサーリンク

コメント

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