■この記事でわかること
・PythonのPandasライブラリーを使った基本的なデータの操作がわかる
・具体的には以下のデータの操作
・データの型の確認方法
・データの取り出し方(抽出)2選
・データの更新方法
・データの追加方法
・時間の比較方法
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |
Pandasの基本的な使い方
今回は、Pandasの基本的な使い方を解説します。
説明は以下条件で進めます。
・データはcsvファイル名「Pandas_text.csv」に格納されているとする。
・Pandas型変数 dfにはcsvのデータが読み込まれているものとする。
・最後にコードの全体がわかるようにgistのリンクを記載します。
「Pandas_text.csv」には、以下のような表のように格納されてる。
id | date | 数値 | コメント |
---|---|---|---|
1 | 2017/10/1 | 600 | cash |
2 | 2017/10/2 | 1000 | card1 |
3 | 2017/10/2 | 2000 | card1 |
4 | 2017/10/3 | 2400 | card2 |
5 | 2017/10/4 | 900 | card3 |
6 | 2017/10/5 | 2200 | card3 |
データの構成を確認する
df = pd.read_csv('Pandas_test' + '.csv', header=0)
display(df.dtypes)
id int64
date object
数値 int64
コメント object
dtype: object
ilocを使ってデータ取り出す操作
ilocは、配列に対して数値で選択する。
#2行目のデータ取り出す
a = df.iloc[1]
#2行目3列目のデータ取得
a = df.iloc[1,2]
locを使ってデータ取り出す操作
ilocとの違いは、数値ではなくカラム名などの文字列で指定します。
#dateの列だけ取得する
a = df.loc[:,"date"]
#2行目の「コメント」列の情報を取りたい場合の指定方法
a = df.loc[1,"コメント"]
データを更新(上書き)する
データの上書き方法は、df.locに2次元配列にデータを書き込む感覚で・・・。
#2行目4列目(コメント)のデータを更新する
df.loc[1,"コメント"] = "コメントの更新してみる"
display(df)
データを追加(insert)する
次にデータをinsertする方法を解説します。
カラムを追加する
この動きとしては、「コメント2」カラムが追加されて、1行目にデータが代入されます。
2行目以降のデータが無いところはNull値が入ります。
df.loc[0,"コメント2"] = "コメントカラム追加"
行を追加する
#形式は「変数 = pd.Series(データの配列, index = 横行の名前の配列)」
tmp_se = pd.Series( [ 7 , "2017-10-06", 3000, "card4", "なにか" ], index=df.columns )
df = df.append( tmp_se ,ignore_index=True)
Pandasで時間の比較をする(条件付きのデータ抽出含む)
まず時間データ抽出に失敗する例
a = df[ df["date"] == dt.datetime(2017, 10, 5)]
本来は dateカラムに「2017-10-05」のデータがあるのに結果は0件で抽出していないことになっている。
この原因は、csvからdf[“date”] にデータを読み込んだとき、object型でdatetime64に変換されていないからである。よって、時間比較前にdateカラムの情報をdatetime64に変換します。
変換方法は以下の通り。
#まずはdatetime64に変換する
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
print(df.dtypes)
#再び時間の比較
#今度は正しく、dateカラムが2017-10-5のデータの行を取得できます。
a = df[ df["date"] == dt.datetime(2017, 10, 5)]
display(a)
オブジェクトの中身をみると以下のようになっていることがわかる。
id int64
date datetime64[ns]
数値 int64
コメント object
コメント2 object
dtype: object
最後にサンプルコードの全体を示します。
参考講座
最後にPythonの初学者に役立つ参考講座を紹介します。
■Udemyの「みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習」
プログラミング言語Pythonを使って、Pythonの基本構文から学び、機械学習まで学べるもの。数学も学べるためお得感があります!
サイバーセール中はUdemyコースが最大90%OFF▼
まとめ
いかがですか?
Pandasは使い方がわかると簡単ですが、正しい知識がないとハマりやすいので注意が必要です。
特に、「iloc」「loc」の使い方は慣れていないと間違えやすいので、もしPandasの使い方になれていないと思ったら、一度立ち止まって、仕様を理解して使ったほうが良いです。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |