pandasの機能と使い方について、使用したものを整理する。
CSVファイル読み込み
pandas.read_csv()
使用できる引数はマニュアル参照。
主な引数はこのページ参照。
import pandas as pd
train = pd.read_csv('../train.csv')
CSVファイル出力
to_csv()を使用。
参考は[このページ](https://qiita.com/okadate/items/c36f4egit push origin masterb9506b358fb608#3-pandas%E3%82%92%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95%E3%81%8A%E3%81%99%E3%81%99%E3%82%81)。
import pandas as pd
train = pd.read_csv('../train.csv')
# 行名の出力が不要の場合は、index=Falseを指定する(defaultはTrue)
train.to_csv('train.csv', index=False)
欠損値の有無の確認
参考はこのページ。
pandasのデータフレームに対して、isnull()とany()を使用する。
isnull()は項目が欠損値かどうかを判断し、any()は全体をみて真偽を返す。
カラム全体で欠損値が含まれるかどうか判断するには以下のサンプルのように使用する。
import pandas as pd
train = pd.read_csv('../train.csv')
train.isnull().any(axis=0)
# (列方向を指定するためのanyの「axis=0」はデフォルトなので省略可)
以下のように返ってくる。
PassengerId False
Survived False
Pclass False
Name False
Sex False
Age True
SibSp False。
Parch False
Ticket False
Fare False
Cabin True
Embarked True
dtype: bool
欠損値の数を確認するにはany()の代わりにsum()を使用する。
import pandas as pd
train = pd.read_csv('../train.csv')
train.isnull().sum()
以下のように返ってくる。
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
欠損値を補完する
参考はこのページ。
fillna()を使用する。
import pandas as pd
train = pd.read_csv('../train.csv')
# 欠損値を0埋めする
train.fillna(0)
# 欠損値を平均埋めする
train.fillna(train.mean())
特定の列を取得する
参考はこのページ。
import pandas as pd
train = pd.read_csv('../train.csv')
# どちらも同じ結果になる
train['Age']
train.Age
列の名称を変更
import pandas as pd
train = pd.read_csv('../train.csv')
# Aの列名をaに変更
train.rename(columns={'A': 'a'}
特定の列を削除する
参考はこのページ。
import pandas as pd
train = pd.read_csv('../train.csv')
# Age列を削除
train.drop("Age", axis=1)
条件を指定して特定の行を取得する
参考はこのページ。
import pandas as pd
train = pd.read_csv('../train.csv')
# Ageが10以上のデータを抽出
train[train.Age >= 10]
クロス集計表を作成する
参考はこのページ。
import pandas as pd
train = pd.read_csv('../train.csv')
pd.crosstab(train['Sex'], train['Survived'])
Survived | 0 | 1 |
---|---|---|
Sex | ||
female | 81 | 233 |
male | 468 | 109 |
ダミー変数を作成する
ダミー変数とは
参考はこのページ。
カテゴリデータを数値変換したもの。
カテゴリデータはダミー変数化することにより、説明変数として使用することができる。
作成方法
参考はこのページ。
get_dummies()を使用する。
import pandas as pd
train = pd.read_csv('../train.csv')
# 「male」、「female」の値が格納されている性別項目をダミー変数化する
df_sex_dummy = pd.get_dummies(train['Sex'], prefix='Sex', drop_first=True)
以下の感じの結果になる。
Sex_male |
---|
1 |
0 |
1 |
「Sex_female」列が生成されないのは、drop_firstをTrueにしているから。
ダミー変数を作成するときには1つ目のカテゴリは多重共線性への対応から作成しないのが流儀。
多重共線性については以下参考。
参考1
参考2
結合
参考はこのページ。
join()を使用。
デフォルトではleft outer joinになるので注意。結合キーはindexになる。
# train_joinにtrain1とtrain2を結合したデータを格納。結合軸はtrain1
train_join = train1.join(train2)
# 結合条件をリストにする
merge_joken=('a', 'b', 'c')
train_join = pd.merge(train1, train2, on=merge_joken)
PostgreSQLにテーブル作成
データフレーム内容でPostgreSQLに直接テーブルを作成する。
# dfはデータフレーム
import psycopg2
from sqlalchemy import create_engine
engine=create_engine("postgresql://username:password@hostname:port/dbname")
df.to_sql("table_name", engine, if_exists="replace", index=False)
PostgreSQLのデータをデータフレームに投入
import pandas as pd
import psycopg2
# 接続情報
connection_config = {
'host': '',
'port': '',
'database': '',
'user': '',
'password': ''
}
# 接続
connection = psycopg2.connect(**connection_config)
# DataFrameでロード
dataframe = pd.read_sql(sql="SELECT 〜;", con=connection)