※さらに30日間返金保証ありなので、実質リスクゼロ。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
今回はPythonの外部ライブラリである、Pandasを使って、CSV形式のファイルを読み込んでいきましょう。
Pandasとは?
Pandasとは、Pythonでデータ分析をおこなう上で処理を効率化してくれるライブラリです。
機械学習などでデータを処理する際にもよく使われています。
今回はCSV形式のファイルからデータを読み込む操作(最も基本的な操作)を学んでいきます。
ちなみにCSVファイルとは「Comma Separated Value」の略で、日本語に直すとカンマで区切られた値になります。
CSVファイルはそのままエクセルで開くことができます。
以下の記事ではPandasを使わずに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ライブラリについて、最も基本的な、データを読み込み、表示するという部分について勉強しました。
冒頭で述べた通り、機械学習などでもよく使われるライブラリなので使い慣れておいて損はないです。
機械学習がそもそも何か分からないという人はこちらの記事を参考にしてみてください。
※さらに30日間返金保証ありなので、実質リスクゼロ。
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル