Python Pandas 初心者向けサンプルコード

Pandas DataFrame の基本

    ・DataFrame から新たな DataFrame インスタンスが作られる

    ・2次元=DataFrame , 1次元=Series (ラベルつけられるので辞書にも似ている)

    ・DataFrame への値の代入、置換は loc , iloc , ix , at , iat を使う

    ・query() は条件抽出して新たな DataFrame を作る。代入や置換はできない。

test.csv

name,id,color,age
taro,11,blue,10
hanako,12,red,20
ken,13,blue,30

サンプルコード

# coding: utf-8
import pandas as pd

df = pd.read_csv('test.csv')
print(df)
print("-"*30)

# 行列に行列を追加 (新しいDataFrame インスタンスが生成される)
df2 = df.append(df)
print(df2)

# loc で列を指定して取得
print(df.loc[:, "name"])  # Series
# 列を指定せず全部とってくる
print(df.loc[:, ])  # df.loc[:,:] でもよい
# loc で列を指定して Series を取得
print(df.loc[:, ["name", "age"]])
# boolean で指定 ( Series と連携して多用する )
print(df.loc[[True, False, True], ])

# iloc で index 指定して取得 -1,-2のように後ろから指定できる
print(df.iloc[-2:, ])
# ------------------------------
# 条件抽出
print(df['age'] < 25)  # Series
print(df[df['age'] < 25])  # DataFrame
# query で取得 (必ず新しいDFが返される)
print(df.query('age < 25'))  # DataFrame
value = 25
print(df.query('age < @value'))  # DataFrame (変数を参照する)

# 条件抽出して loc で抽出したindexを指定して "age"に値を代入
df_query = df.query('age > 15')
df.loc[df_query.index, "age"] = 100
# df.loc[df_query.index] = 100  # カラムを指定しない場合は全部書き変わる

# 文字列を含むデータを抽出
a_series = df['name'].str.contains('a')  # Seriesを取得 (bool一覧が返される)
a_df = df[df['name'].str.contains('a')]  # DataFrameに変換

print(df.loc[a_series])  # a_series で抽出
print(df.loc[a_df.index])  # index でも抽出できる
print(df.loc[~a_series])  # 抽出内容を~(NOT)演算子で反転

行の追加 append

    append は戻り値で新しいインスタンスを返す

~ 演算子を使う意味: ビット反転(NOT)

    0010 => 1101

    True , False をもつ1次元(Series)を利用して条件抽出を行う際に結果を反転できる

pandas の loc、iloc、ix の違い

    loc    行ラベル、 列ラベル

    iloc    行の番号、列の番号

    ix    行ラベル、列ラベル or 行の番号、列の番号

    http://ailaby.com/lox_iloc_ix/

query で条件抽出して代入

    https://qiita.com/kazetof/items/992638be821a617b900a

特定の文字列を含む要素を持つ行を抽出

    https://note.nkmk.me/python-pandas-str-contains-match/

pandasで任意の位置の値を取得・変更するat, iat, loc, iloc

    https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

pandasのDataFrameのデータ操作をよくわすれるので、よく使用する操作を自分のためにまとめた

    https://qiita.com/kakiuchis/items/46ff158295686c0c71cf

json のような入れ子構造を扱う json_normalize

    https://qiita.com/simonritchie/items/7e50b47ccadbbb0fba57

Panel: 3次元のデータ

    https://www.madopro.net/entry/2016/10/14/022723

3Dソフト (3ds Max、Maya) などで Pandas をつかう場合

    mayapy.exe の python は 2.7.11 (64bit)

    pip install pandas はできない。numpy が import error になるので、Windows , maya python 用にビルドが必要。

    Eric Vignola 氏によって用意された whl でインストールする。

cd C:\Program Files\Autodesk\Maya2019\Python\Scripts
pip install "numpy-1.13.1+mkl-cp27-none-win_amd64.whl" --user
pip install pandas-0.20.3-cp27-none-win_amd64.whl --user

numpy を Window 10 + Maya 2018 にインストールする

    https://qiita.com/syoyo/items/8b578a6637b90ba2061a

Numpy 1.13.1 + Scipy 0.19.1 for Maya 2018

    https://forums.autodesk.com/t5/maya-programming/numpy-1-13-1-scipy-0-19-1-for-maya-2018/m-p/7362541

Eric Vignola

    https://forums.autodesk.com/t5/user/viewprofilepage/user-id/3243401

コメントを残す

メールアドレスが公開されることはありません。

Next Post

究極のゲームハッキングツール集

火 12月 4 , 2018
究極のゲームハッキングツール集