自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

pandasで様々なデータをデータフレームに読み込んでみよう(CSV編)

Python
Python

どうもヒノマルクです。
今日はCSVをpandasで読み込みたいと思います。
データは下記のようなものを準備しました。

CSVファイル
ドラえもん,2112-9-3
野比 のび太,1964-8-7
源 静香,1964-5-2
骨川 スネ夫,1964-3-28
剛田 武,1964-6-15

ドラえもんの登場人物と誕生日(諸説あり)のデータです。

それでは確認していきましょう

スポンサーリンク

pandasのバージョンを確認

import pandas as pd
pd.__version__
Out[0]
'1.3.4'
スポンサーリンク

CSVを読み込む

pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.csv")
Out[0]
ドラえもん 2112-9-3
0 野比 のび太 1964-8-7
1 源 静香 1964-5-2
2 骨川 スネ夫 1964-3-28
3 剛田 武 1964-6-15

おっとと、ヘッダーの設定をしていなかったので1番最初の行(ドラえもん)がヘッダーとして認識されてしまいました。
header=Noneを明示的に指定してあげて、ヘッダーがないことをプログラムに教えてあげます。

スポンサーリンク

CSVを読み込む header=None

pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.csv",header=None)
Out[0]
0 1
0 ドラえもん 2112-9-3
1 野比 のび太 1964-8-7
2 源 静香 1964-5-2
3 骨川 スネ夫 1964-3-28
4 剛田 武 1964-6-15

header=Noneを指定することによって、ドラえもんが一番最初の行として読み込まれました。
行列の選択はインデックスと言われるこの形でも出来ます。

スポンサーリンク

index操作によるデータ抽出

df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.csv",header=None)
# df.loc[row_indexer,column_indexer]
# 行は全てを選択、列はインデックス0を選択
df.loc[:,0]
Out[0]
0     ドラえもん
1    野比 のび太
2      源 静香
3    骨川 スネ夫
4      剛田 武
Name: 0, dtype: object
# 行は全てを選択、列はインデックス1を選択
df.loc[:,1]
Out[0]
0     2112-9-3
1     1964-8-7
2     1964-5-2
3    1964-3-28
4    1964-6-15
Name: 1, dtype: object
# 行はインデックス0-2を選択、列は全てを選択
df.loc[0:2,:]
Out[0]
0 1
0 ドラえもん 2112-9-3
1 野比 のび太 1964-8-7
2 源 静香 1964-5-2

このままだと少々分かりづらいので列名をつけてあげます。

スポンサーリンク

CSV読み込み (列名付与)

# 列名をつけてあげるには namaesオプションを使ってあげます。
df = pd.read_csv("/Users/hinomaruc/Desktop/notebooks/ドラえもん登場人物.csv",header=None,names=["名前","誕生日"])
df
Out[0]
名前 誕生日
0 ドラえもん 2112-9-3
1 野比 のび太 1964-8-7
2 源 静香 1964-5-2
3 骨川 スネ夫 1964-3-28
4 剛田 武 1964-6-15

無事列名がつけれました。
ちなみにheaderがファイルに存在する場合で、列名を別途つけたい場合は、header=0とする必要があるそうです。

If the file contains a header row, then you should explicitly pass header=0 to override the column names

前のバージョンだと列名の指定はcolumns=とかだったと思うのですが、仕様変更したのかもしれません。動かないという方はバージョンをご確認ください。

スポンサーリンク

参照元

https://hugkum.sho.jp/74862

https://qiita.com/yuji38kwmt/items/1a30926f89c5c565ad4b

https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html [
Indexing and selecting data — pandas 1.3.4 documentation]

https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html [pandas.read_csv — pandas 1.3.4 documentation]

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