まずはPandasを学ぶ上での基本となる用語の説明です。具体的な使い方などは別ページでの解説に任せて、ここでは用語の説明だけにと止めます。
その上で、これさえ理解出来たらひとまずデータの処理は出来るように、x行目、y番目カラムのデータへのアクセス方法を解説します。
用語
pd
pandasそのものの別名です。厳密には用語というわけではありませんが、多くの開発者が以下の様にpdと別名を付けて使うことがほとんどかと思います。
import pandas as pd input_file_name = "test.csv" df = pd.read_csv(input_file_name, sep=',', header=None) df = df.fillna('')
import文ではimport 名称 as 別名
といった形で別名が付けられますが、そこにpdと指定しています。
DataFrame
PandasをPandasたらしめてると言っても過言ではない重要なオブジェクトであるDataFrameです。端的に表現すると表であり2次元のデータを保持したオブジェクトです。とても豊富な機能を有していて、かつそれらがかなり高速に動作します。
変数名にはdfとされている例をよく見かけますし、私もそうしています。
Data
続いてdataです。これは特別な用語として登場することはありませんし、必ずしもdataという用語が一般的かというとすこし疑問なのですが、以下のように指定することになっているのでdataと。
pd.DataFrame(data=格納するデータ, index=行名, columns=列名)
ちょうど以下の赤枠内のデータがdataです。(この文章がすでにこの用語の微妙さを表していますね)
Index
indexすなわち行名です。これに関しては以下の様に指定するからという無理矢理な説明も不要かと思います。
pd.DataFrame(data=格納するデータ, index=行名, columns=列名)
以下の赤枠部分がindexになります。実際には以下の例ではindexを指定せずに自動で割り振らせた場合の値になります。(ちょっとだけ意識した方が良いこととして、この場合intの値が割り振られています)
自由に指定する事が出来るので、実際には文字列を充てることも出来ますし、もしもそうした方が便利なのであればID列をindexにすることも可能です。
Columns
続いてcolumnsです。説明の余地無く、列名ですね。これも自動で割り振らせることは可能です。ここでは説明に列には名前があって、行には名前が無い単純な表を使っているだけです。
Series
用語の最後はSeriesです。列それ自体をseriesと言うわけではありません。SeriesとはDataFrame同様にPandasにおいて重要なオブジェクトであり、DataFrameが2次元データなのに対して、Seriesは1次元データを扱うためのオブジェクトです。従って列はSeriesに変換可能で、時折行ったり来たりをすることになります。
データへのアクセス
最後に、x行目、y番目カラムのデータへのアクセスする方法です。ごちゃごちゃ勉強するのは後にして、とにかく使って覚えるってための入口ですね。
df = pd.read_csv(input_file_name) for i in range(df.shape[0]): for j in range(df.shape[1]): print(df.iat[i, j])
dfにはデータが2次元のデータが詰まっているイメージで、df.shapeに(行数, 列数)が格納されています。なので、df.shape[0]で1つ目の行方向のループを、df.shape[1]で2つ目の列方向のループを回しています。
df.iat[i, j]
これでExcelでいうところのセルに格納されているデータが取り出せます。(xとかyとか言っておきながらの、iとjで済みません…)
まとめ
いかがでしたでしょうか。まずはこの用語を押させておきましょうというのをご紹介しました。今の時点ではそれぞれの指定の仕方も扱い方も触れていませんが、特にDataDrameやSeriesにはとても多くの学ぶべき事が待っています。
ですが、それらをひとまず脇に置いておいて、とりあえずデータにアクセスしたい、使って覚えるための方法もご紹介しました。
さあ、Pandasを使い倒しましょう。