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

pandasのデータフレームの作り方・CSVファイルからの読込み【Python】

tadanori

pandasのデータフレームの作り方とCSVファイルからの読み込み方をまとめてみました。データフレームはlist, tuple, dict, numpyから生成する方法を説明しています。csvファイルからの読み込みについては、いろいろなパターンを網羅しました。

目次から検索しやすいように各タイトルをつけていますので目的の部分に直接飛んでください

pandasのデータフレーム作成・読み込み

pandasを利用する場合、データをデータフレームに変換する作業が必要になります。

データフレームへの変換は、いろいろなデータから行うことができます。ここでは、自身がよく使うデータフレームの作成パターンを列挙してみました。

また、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は多機能で覚えきれないので、いくつかに分けて使い方をまとめたいと思っています。

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

あわせて読みたい
【Python】pandasで行を抽出する方法|queryの速度をチェック
【Python】pandasで行を抽出する方法|queryの速度をチェック
あわせて読みたい
pandasで表を結合するmergeの使い方を解説|チートシート
pandasで表を結合するmergeの使い方を解説|チートシート
あわせて読みたい
Category Encodersでカテゴリ特徴量を手軽に変換する方法【pandas】
Category Encodersでカテゴリ特徴量を手軽に変換する方法【pandas】
おすすめ書籍

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

記事URLをコピーしました