【python】pandas使いました
こんにちは。 梅雨も明け、暑い日が続きますね・・・ 晴れていることは嬉しいですが、気軽に外を歩けないのが辛いです。
相変わらずドラムの練習もしているのですが、車に荷物を乗せスタジオまでに持ち運ぶ頃には汗だくで満身創痍です。
とはいえ、好きなことですので暑さに無理しない程度に?楽しんでいこうと思います!
はじめに
急に変わってお仕事の話ですが、昨年からAIに関する業務に携わっていて、最近ではオープンデータを活用して予測モデルを作っています(業務秘密もあるので、超ざっくりしてます笑)。
業務に携わる中で、タイトルの"pandas"を活躍しているわけですが、pandasの基礎のない私は闇雲にググりながらなんとか・・・!動作させていました。
作業が一段落したので、復習も兼ねて今回はこのpandasについて基本的なことをまとめてみます。
pandasとは
概要
Package overview — pandas 1.3.0 documentation
pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with “relational” or “labeled” data both easy and intuitive.
上記はPandasの公式から引用しました。
ざっくり翻訳すると、リレーショナル、ラベルデータなどのデータ構造に対してのデータ分析を可能とするpythonパッケージであるとのことです。
"リレーショナル"、"ラベルデータ"についての詳細は割愛しますが、どちらも共通して列、行で構成される2次元の表データと考えることができるかと思います。
pandasでは、「DataFrame」という2次元のデータを格納するオブジェクトを用いて、表形式のデータに対していろいろな処理を施すことができます。
ちょいと話がそれますが、AIで何か解析を行いたい!となった場合、いきなりAIにデータを読み込ませるのではなく、AIに読み込ませることができる形に加工してあげる※必要があります。
厳密にいうと、「AIなどのプログラムにおいて、学習用のメソッドの引数に相応しい形式に変換する必要がある」と言った方が正しいのかな?と思ってますが、そんな時に、このpandasが大活躍するわけですね。
今後も、私はAIについてもっと触れていきたいと思ってますので、このpandasとは長い付き合いになりそうです。
DataFrame, Seriesについて
概要
"DataFrame"という2次元のデータを格納するオブジェクト、"Series"は、1次元のデータを格納するオブジェクトです。
csvやexcel形式などのデータをDataFrame形式として読み込むことで、任意の行列のデータを抽出したり、列ラベルの情報を取得したり、新しい列・行を追加したり・・・といろんなことができます。
その、いろいろな操作を覚える前に、まずはDataFrame, Seriesの構成について押さえておく必要があります。
構造
以下は、DataDFrame, Seriesの構成をまとめたものになります。
名称 | 意味 |
---|---|
columns | 列名(列ラベル、ヘッダー) |
index | 行名(行ラベル) |
values | 実際のデータの値 |
DataFrameのメソッドは、このcoumnsやindexを指定した操作があるのでこれらの用語はしっかりと抑えておきましょう(自分に言ってます笑)。
また、seriesは1次元のデータなわけですが複数集まることで、DataFrame(2次元)になるという関係も覚えておくと良いと思います。
コード
今回は、csvファイルDataFrameに変換する方法を記述します。
import pandas as pd df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0) print(df) # age state point # name # Alice 24 NY 64 # Bob 42 CA 92 # Charlie 18 CA 70 # Dave 68 TX 70 # Ellen 24 CA 88 # Frank 30 NY 57
超ざっくり解説ですが、 index_colは、indexとなる列を指定します(上記のコードでは、"name"列を指定)。
また、上記では、"name", ""age", "state", "point"が自動で行ラベルに指定されていますが、"header=None"という引数を追加すると
これらは一つのデータ(values)になります。
→代わりにcolumnsには、0, 1, 2・・・と連番で付与される
参考
終わりに
ここまで見てくださりありがとうございました! 次回は、DataFrameで実際に行った加工方法についてまとめてみようと思います。