【Python】Pandasを使ってCSVファイルの読み込みと中身の表示をしてみよう

こんにちは。関東の大学に通う大学生ミンチ(@programminchi)です。今回はPythonの外部ライブラリである、Pandasを使って、CSV形式のファイルを読み込んでいきましょう。

 

 

Pandasとは?

Pandasとは、Pythonでデータ分析をおこなう上で処理を効率化してくれるライブラリです。

機械学習などでデータを処理する際にもよく使われています。

今回はCSV形式のファイルからデータを読み込む操作(最も基本的な操作)を学んでいきます。

 

ちなみにCSVファイルとは「Comma Separated Value」の略で、日本語に直すとカンマで区切られた値になります。

CSVファイルはそのままエクセルで開くことができます。

以下の記事ではPandasを使わずにCSVファイルを扱う方法について書かれているので、参考にしてみてください。

 

PythonのcsvモジュールでCSVファイルの読み込み書き込みをしよう

 

 

Pandasを使ってCSVファイルの中身を読み出し

それではPandasライブラリを使って、CSVファイルの中を読み込んでいきましょう。

まずは今回読み込んでいくためのCSVファイルを用意します。

 

Name, Age, Height, Weight
Taro, 20, 178, 65
Jiro, 17, 168, 59
Takuya, 28, 174, 70

見れば分かると思いますが、Taro、Jiro、Takuyaの年齢、身長、体重がCSVファイル形式に(カンマで区切られたデータ)なっています。

このCSVファイルにfile1.csvという名前にして、保存します。

それではこのCSVファイルからデータを読み込んでいきましょう。

 

import pandas as pd
df = pd.read_csv('file1.csv')
print(df)

#出力
         Name   Age   Height   Weight
0        Taro    20      178       65
1        Jiro    17      168       59
2      Takuya    28      174       70

1行目ではPandasライブラリをpdという名前でインポートしています。

2行目ではread_csv関数を使ってCSVファイルを読み込みます。引数に読み込みたいCSVファイルをとります。

 

最後にこれをprint文で出力してあげると、きれいに出力結果が表示されます。

1行ずつ0、1、2という風に番号がふられています。

 

 

Pandasで読み込んだファイルを書き出し


次に、CSVファイルの中身を出力として書き出す方法を見ていきましょう。

上でやったようにprint文を使うだけなのですが、CSVファイルの形によってはひと手間加える必要があります。

 

ヘッダー(header)の有無を指定する

ヘッダーとはfile1.csvの例で言うと、Name、Age、Height、Weightの部分です。

ヘッダーがある場合、何もしなくても上のようにきれいに出力されるのですが、仮にヘッダーがない場合出力が以下のようになります。

 

         Taro   20   178   65
0        Jiro   17   168   59
1      Takuya   28   174   70

Taroさんのデータがヘッダーとして認識されてしまうのです。

これを避けるために、read_csv関数を使うときに引数でheader=Noneとしてあげてください。

 

df = pd.read_csv('file1.csv', header=None)
print(df)


#出力
            0   1    2   3
0        Taro  20  178  65
1        Jiro  17  168  59
2      Takuya  28  174  70

すると出力でヘッダーとして新しく番号が割り振られます。

 

インデックス(index)を指定する

インデックスとは、上の例の出力で、1番左に出ている行番号のようなものです。

file1.csvの中身を以下のように変えてみてください。

 

,Name, Age, Height, Weight
NO1, Taro, 20, 178, 65
NO2, Jiro, 17, 168, 59
NO3, Takuya, 28, 174, 70

これをPandasで読み込んで出力してみます。

 

               Name   Age   Height   Weight
0      NO1     Taro    20      178       65
1      NO2     Jiro    17      168       59
2      NO3   Takuya    28      174       70

こんな感じでインデックスが2個ついてしまいます。

これを避けるために、read_csv関数の引数でindex_colを指定してあげます。

 

df = pd.read_csv('file1.csv', index_col=0)
print(df)


#出力
            Name   Age   Height   Weight
                                        
    NO1     Taro    20      178       65
    NO2     Jiro    17      168       59
    NO3   Takuya    28      174       70

index_colを0で指定してあげると、1番左の列がインデックスとして認識されます。

実際に、上の例でもNO1、NO2、NO3がインデックスとして認識されました。

 

特定の列だけ表示する

表示したい列を指定することもできます。

read_csv関数の引数にusecols=[ ]として、リストの中に表示したい列番号を入れてあげましょう。

 

df = pd.read_csv('file1.csv', usecols=[0, 1])
print(df)


#出力
         Name   Age
0        Taro    20
1        Jiro    17
2      Takuya    28

上の例では、列番号0と1を指定しているので、NameとAgeの列だけが結果として表示されました。

 

 

まとめ

今回はデータ分析などの分野でよく使うPandasライブラリについて、最も基本的な、データを読み込み、表示するという部分について勉強しました。

冒頭で述べた通り、機械学習などでもよく使われるライブラリなので使い慣れておいて損はないです。

機械学習がそもそも何か分からないという人はこちらの記事を参考にしてみてください。

 

機械学習を猫でもわかるように説明してみた

 

今後も定期的にコンピュータ系の記事を発信していくので是非、興味のある人はツイッターの方もフォローお願いします!!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です