プログラミング
記事内に商品プロモーションを含む場合があります

pandasでデータフレームを作る方法とCSV読み込みを徹底解説|Python

Aru

この記事では、データフレーム(DataFrame)を生成する方法を徹底解説します。まず、リストやタプル、辞書、Numpy配列などから新しいデータフレームを生成する方法を説明します。次に、CSVファイルからデータフレームを生成する方法について、さまざまなパターンを網羅しつつ説明します。目次から知りたい情報に直接ジャンプできるように構成していますので、ぜひ活用してください。

pandasのデータフレーム生成・読み込みについて

pandasを利用する場合、データをデータフレーム(DataFrame)に変換する作業が必要になります。pandasでは、データフレームへの変換は、さまざまなデータソースから行うことが可能です。

この記事では、私がよく使うデータフレームの生成パターンをいくつか紹介します。

また、CSVファイルを読み込んでデータフレームを生成することも多いので、CSVファイルの読み込みについても、できるだけ多くのパターンを網羅して解説を行いました。

ネット上でも同様の情報は見かけるかもしれませんが、欲しい情報が簡潔にまとまったページが見つからなかったため、今回新たに作成しました。

「データフレームの生成とCSVファイルの読み込み」に特化した記事として、ぜひ活用してください。

データフレームの生成パターンを網羅する

リスト(list)から作る

リストから作る方法です。列名(カラム名)は、columnsでつける必要があります。

import pandas as pd

df = pd.DataFrame([[1,0.1,'a'],[3,1.2,'b']], columns=['x', 'y', 'z'])
display(df)

xyz
010.1a
131.2b

タプル(tuple)から作る 

リストから作る場合と同様です。列名(カラム名)は、columnsでつける必要があります。

import pandas as pd

df = pd.DataFrame(((1,0.1,'a'), (3,1.2,'b')), columns=['x', 'y', 'z'])
display(df)

xyz
010.1a
131.2b

辞書(dict)から作る

辞書から作成する場合は、辞書のキーがカラム名になります。

import pandas as pd

df = pd.DataFrame({'x': [1,3], 'y':[0.1,1.2], 'z':['a', 'b']})
display(df)

xyz
010.1a
131.2b

numpyから作る

numpyから作る場合もリストから作る場合とほぼ同じです。

import pandas as pd
import numpy as np

array = np.array([[1,0.1,'a'],[3,1.2,'b']])
df = pd.DataFrame(array, columns=['x', 'y', 'z'])
display(df)

xyz
010.1a
131.2b

CSVファイルを読み込んでデータフレームを作成する

ヘッダ付きCSVファイルを読み込む

1行目にカラム名(ヘッダ)がある場合は、自動的に1行目をカラム名として読み込みます。

CSVファイルの内容
x,y,z
1, 0.1, a
3, 1.2, b
import pandas as pd

df = pd.read_csv('test.csv')
display(df)

xyz
010.1a
131.2b
ヘッダーのスペースに注意

ヘッダーとなる文字列に以下のような空白がある場合、

    x,     y,    z

読み込むとカラム名にも空白が入ってしまいます。ヘッダーの部分に空白がある場合は、カラム名に空白が含まれていることを意識する必要があります。

df.columns
# Index(['    x', '     y', '    z'], dtype='object')

ヘッダなしCSVファイルを読み込む

ヘッダがない場合ば、header=Noneとします。また、カラムに名前をつけたい場合はnamesでカラム名を指定します。

CSVファイルの内容
1, 0.1, a
3, 1.2, b
df = pd.read_csv('test.csv', header=None, names=['x', 'y', 'z'])
display(df)

xyz
010.1a
131.2b

先頭からN行スキップしてCSVファイルを読み込む

ファイルの先頭にコメント行など余分なものがある場合には、スキップさせることができます。

この例では、skiprowsで4行をスキップして読み込んでいます。

CSVファイルの内容
# データ列の説明
# x : 整数
# y : 小数点
# z : 文字列
x,y,z
1, 0.1, a
3, 1.2, b
import pandas as pd

df = pd.read_csv('test.csv', skiprows=4)
display(df)

xyz
010.1a
131.2b

スキップする行を指定してCSVファイルを読み込む

skiprowsでは、スキップする行を指定することも可能です。

この例では、0行目、1行目、末尾の5行目をスキップするように指定します。

インデックスが0始まりなことに注意してください。

CSVファイルの内容
# データ列の説明
# begin data
x,y,z
1, 0.1, a
3, 1.2, b
# end of data
import pandas as pd

df = pd.read_csv('test.csv', skiprows=[0,1,5])
display(df)

xyz
010.1a
131.2b

先頭からN行をCSVファイルから読み込む

先頭からN行だけファイルから読み込みます。

例では、カラム数の違う2つの表が1つのファイルに入っている例です。上の表だけ取り出すには、nrows=2を指定します。ヘッダーを含めると3行ですが、ヘッダーを含めない行数を指定することに注意してください。

CSVファイルの内容
x,y,z
1, 0.1, a
3, 1.2, b
# end of data
a,b
1,2
3,4
import pandas as pd

df = pd.read_csv('test.csv', nrows=2) # headerの行は含まれないことに注意
display(df)

xyz
010.1a
131.2b

データの型を指定してCSVファイルを読み込む

pandasでcsvファイルを読み込む場合は、データの型を自動で類推してくれます。

明示的に指定したい場合には、dtypeで型を指定します。

{ カラム名:型, ….}の形で指定することで、それぞれのカラムの型を指定することが可能です。

CSVファイルの内容
x,y,z
1,2,3
4,5,6
import pandas as pd

df = pd.read_csv('test.csv', dtype={'x': int, 'y': float, 'z': str})
display(df)

print(df.dtypes)
# x       int64
# y    float64
# z     object
# dtype: object

その他のTIPS

  • ZIPで圧縮されたCSVファイルも読み込むことが可能
  • URLを指定してネットからCSVファイルを読み込むことも可能

まとめ

pandasでのデータ生成とcsvファイルの読み込みについて例を使って説明しました。pandasは多機能で覚えきれないので、いくつかに分けて使い方をまとめたいと思っています。

頻繁に使い方を検索するので、自分向けの整理を兼ねています

あわせて読みたい
queryメソッドは速い?遅い?|pandasで行抽出をベンチマークしてみた【Python】
queryメソッドは速い?遅い?|pandasで行抽出をベンチマークしてみた【Python】
あわせて読みたい
pandasのmergeによる表結合を深掘り解説(チートシート形式)
pandasのmergeによる表結合を深掘り解説(チートシート形式)
あわせて読みたい
Category Encodersでカテゴリ変数を簡単に数値化する方法【pandas】
Category Encodersでカテゴリ変数を簡単に数値化する方法【pandas】

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

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました