Submit Search
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
0 likes
185 views
Hiro H.
Pythonの表形式データ用ライブラリの「pandas」についてです。
Technology
Read more
1 of 13
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
More Related Content
PDF
Intoroduction of Pandas with Python
Atsushi Hayakawa
PDF
chapter6
ymk0424
PDF
R言語勉強会#3.pdf
Takuya Kubo
PDF
九大_DS実践_Python基礎その2
RyomaBise1
PDF
Python for Data Anaysis第2回勉強会4,5章
Makoto Kawano
PDF
シンデレラガールズの「シンプルな」カードゲームを作りたい(アイマスハッカソン2024)
Hiro H.
PDF
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
PDF
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
Intoroduction of Pandas with Python
Atsushi Hayakawa
chapter6
ymk0424
R言語勉強会#3.pdf
Takuya Kubo
九大_DS実践_Python基礎その2
RyomaBise1
Python for Data Anaysis第2回勉強会4,5章
Makoto Kawano
シンデレラガールズの「シンプルな」カードゲームを作りたい(アイマスハッカソン2024)
Hiro H.
式を書くだけで最適化計算してほしい!~CVXPY編~
Hiro H.
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
Hiro H.
More from Hiro H.
(20)
PDF
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
PDF
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
PDF
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
PDF
PCSじゃないよ、PCAだよ
Hiro H.
PDF
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
PDF
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
PDF
シンデレラガールズ声優の増え方まとめ
Hiro H.
PDF
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
PDF
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
PDF
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
PDF
C++のライブラリを簡単に眺めてみよう
Hiro H.
PDF
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
PDF
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
PDF
名古屋市営地下鉄最小距離完乗
Hiro H.
PDF
MSYS2使いはじめました
Hiro H.
PDF
関数の最小値を求めることから機械学習へ
Hiro H.
PDF
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
PDF
rsyncで差分バックアップしようぜ!
Hiro H.
PDF
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
Hiro H.
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
Hiro H.
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
Hiro H.
PCSじゃないよ、PCAだよ
Hiro H.
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
Hiro H.
スマホ音楽ゲームの動画から譜面をデータ化したかった
Hiro H.
シンデレラガールズ声優の増え方まとめ
Hiro H.
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
Hiro H.
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
最近デレステ創作譜面作ってるので技術的な見地から話します
Hiro H.
C++のライブラリを簡単に眺めてみよう
Hiro H.
デレステの劇場で登場したアイドルの回数の統計取ってます
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
名古屋市営地下鉄最小距離完乗
Hiro H.
MSYS2使いはじめました
Hiro H.
関数の最小値を求めることから機械学習へ
Hiro H.
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
Hiro H.
rsyncで差分バックアップしようぜ!
Hiro H.
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
Hiro H.
Ad
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
1.
pandas便利だけど デフォルトパラメータで ファイルを読み込むな! Python東海 #44 (2023.11.18) H.Hiro
[X (Twitter): @h_hiro_]
2.
自己紹介 ◦ H.Hiro (Twitter:
@h_hiro_) ◦ Python東海の初参加は第29回(2016.2.6) ◦ 比較的不定期参加感 ◦ 本業:アルゴリズム作ったりデータ分析したりしてる某 研究員 ◦ ちょっとした処理はPythonで書くことが多いが、パ フォーマンスまで考えたプログラムを書きたいときは C++とかを使うことも
3.
pandas 表形式のデータを扱うライブラリ https://pandas.pydata.org/ 行名と列名を入れた表のファイルを読み込み、 それを用いてアクセスしたりできる Name Age Birthplace Alice
20 Aichi Bob 30 Gifu Charles 40 Mie import pandas as pd data = pd.read_csv("info.csv", header=0, index_col=0) print(data.at["Alice", "Birthplace"]) # "Aichi" を表示
4.
pandasの(私の感じる)利点 ◦ ファイルから行名や列名を取得しアクセスできる ◦ 列名だけなら、標準ライブラリの
csv.DictReader で もできるが、行名だと少々面倒 ◦ 数値や文字列が混ざっていても自動で変換してくれる ◦ 先述の例だと、Ageは整数型、Birthplaceは文字列 型と扱ってくれる Name Age Birthplace Alice 20 Aichi Bob 30 Gifu Charles 40 Mie import pandas as pd data = pd.read_csv("info.csv", header=0, index_col=0) print(type(data.at["Bob", "Age"])) # numpy.int64 print(type(data.at["Charles", "Birthplace"])) # str
5.
pandasの注意点 ◦ 前述の「よきにはからってくれる」点は利点でもあるの だが、しばしば欠点にもなる ◦ すなわち、意図しない変換がなされてしまう ◦
特に、ファイルを読み込む際の引数で、「これはデフォ ルトパラメータにするな!」と私が思うものが結構ある ので紹介します
6.
pandas ◦ ファイルを読み込む関数として、pandas.read_csv を 想定して説明します ◦
read_excelというのもあり、使い方は殆ど同じです ◦ で引数を見るとこんな感じ(めちゃくちゃ多い) https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
7.
デフォルト値のまま使うのに 注意が必要な引数 ◦ header ◦ index_col ◦
na_values / keep_default_na 素性のわからないデータを読み込むときは、追加でこれ も推奨 ◦ dtype
8.
header ◦ ヘッダー(列の名前) ◦ デフォルト: ◦
names引数で列名を別途 与えた場合は、ファイルからは 取得しない ◦ そうでない場合は、ファイルの0行目を利用する ◦ ヘッダーがあるとわかっているファイルを読み込むとき はよいのだが、ファイルのその点を確認してから使うべ きということで、自分は必ず0(0行目を利用)かNone (ファイルからは読み込まない)を指定している Name Age Birthplace Alice 20 Aichi Bob 30 Gifu Charles 40 Mie
9.
index_col ◦ インデックス(行の名前) ◦ デフォルト:原則は0列目。ただし 「0行目の列数<1行目の列数」 なら、0行目の最初のセルは 無視される(理由は後述) ◦
これもheaderと同様、「最初の列がインデックスである か」を確認して使いたいため、自分は必ず0(0列目を 利用)かFalse(ファイルからは読み込まない)を指定し ている ◦ index_colについては、ファイルから読み込まない場 合はFalseであることに注意 Name Age Birthplace Alice 20 Aichi Bob 30 Gifu Charles 40 Mie
10.
index_col(続き) ◦ この挙動の意味は、「0行目の ヘッダーが、左上のセルを省略 している場合がある」ということ を考慮している ◦ この場合、index_col=Falseを 指定しておけば、このように読 み込むが警告を出してくれる デフォルト:原則は0列目。ただし「0行目の列数<1行目 の列数」なら、0行目の最初のセルは無視される CSVファイル Age,Birthplace Alice,20,Aichi Bob,30,Gifu Charles,40,Mie Age
Birthplace Alice 20 Aichi Bob 30 Gifu Charles 40 Mie
11.
na_values / keep_default_na ◦ 無効値(Python上では「nan」)と扱われる文字列を 指定 ◦
デフォルトで何が該当するかはドキュメントに https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html ◦ ある列の他の内容が普通の文字列であったとしても、 その中に空欄や「NA」という文字列があるとnan扱う になってしまう… ◦ nanがないとわかっているデータなら、 keep_default_na=Falseを指定しておき、無効値が出 ないようにするのが安全
12.
dtype ◦ 表全体で or
列ごとに何の型と して読み込むか強制する ◦ 例えば右の表の例で data = pd.read_csv("info.csv", header=0, index_col=0, dtype={"Age": str}) とすると、Age列も数値ではなく文字列となる ◦ 本来は文字列であるのだが、数値とみなせる列が混 ざっているときはこの指定が必要 ◦ なおこの指定よりも keep_default_na のほうが優先 されるため、併用が吉 Name Age Birthplace Alice 20 Aichi Bob 30 Gifu Charles 40 Mie
13.
まとめ pd.read_csv(ファイル名, header=, index_col=, keep_default_na=, dtype=) ここまでテンプレと思おう! デフォルト値を指定してもよいけど、何も考えずデフォル ト値にするのはやめよう!
Download