0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Python] 前処理の小技

Last updated at Posted at 2021-01-18

サンプルデータ作成

irisデータからDataFrameを作成


import pandas as pd
from sklearn.datasets import load_iris


iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

image.png

辞書からDataFrameを作成

import pandas as pd
input = {'a': ['red', 'yellow', 'blue'], 'b': [0.5, 0.25, 0.125]}
df = pd.DataFrame(input)

image.png

2次元配列(matrix)から

df = pd.DataFrame(matrix, columns=['col1', 'col2'])

データ読み込み

import pandas as pd

# エクセル
df = pd.read_excel('ファイル名.xlsx')

# CSV
df = pd.read_csv('filename.csv', low_memory=False, sep=',', delim_whitespace=False, names=col_names, header=True)

データ確認

文字列操作


# 特定の文字列を含むレコードを抽出
df[df['対象列'].str.contains("文字列")]

統計量

train.describe(include='all')

image.png

ペアプロット


import seaborn as sns

sns.pairplot(df, vars=df.columns, hue="target")

image.png

nullチェック

df.isnull().sum()

image.png

各列のUnique数(Distinct)

df.nunique()

image.png

頻度

df.value_counts()

image.png

ヒストグラム

df3['列名'].plot.hist(bins=40)

image.png

ソート (Sort)


# Index順
df.sort_index()
# 列指定
df.sort_values(by='列名')

データ取得


# インデックスの値取得
df.index.get_level_values('INDEX名').unique()

データ加工

One Hot Encoding

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': ['高齢者', '成人', '成人', "幼児", "幼児"], 'B': [2020,2020,2021,2021,1993],
                   'C': [1.0, 2.0, 1.0, np.nan, np.inf], "D":[0,1,2,3,4]})

image.png


pd.get_dummies(df, columns=["A", "B"])

image.png


# OneHot化
df = pd.get_dummies(df, columns=["列名"], drop_first=True)  # drop_first=TrueはOneHot化した先頭列を削除

# 条件に当てはまる行のみ取得
df = df[df['列名'] == 値]

値の変更(置換)


# 全体置換
df.replace({'CA': 'California', 24: 100})

# 列指定置換
df.replace({{'列名': 'CA': 'California', 24: 100}})

# 「カレー」というワードを含むnameを1、含まないnameを0にラベルづけ
train['curry'] = train['name'].apply(lambda x : 1 if x.find("カレー") >=0 else 0)

DataFrameの扱い

# Dataframeを縦に結合
pd.concat([df1, df2, df3], axis=0, ignore_index=True)

# Dataframeを横に結合
pd.concat([df1, df2, df3], axis=1)

列の扱い


# 列名変更
df = df.rename(columns={'変更前':'変更後'})

# 列追加
df = df.assign('列名'='')

# 列削除
df = df.drop('列名', axis=1)

# 列の順序入れ替え
df = df.reindex(columns=['col1', 'col2', ...])

NULL(NaN)の扱い

# 一つでもNULLを含む行を削除
df = df.dropna(how='any')

# NULLを置換
df = df.fillna({'列名': })

One Hot Decode

animals = pd.DataFrame({"monkey":[0,1,0,0,0],"rabbit":[1,0,0,0,0],"fox":[0,0,1,0,0]})


image.png

def get_animal(row):
    for c in animals.columns:
        if row[c]==1:
            return c
animals.apply(get_animal, axis=1)

image.png

出力


# csv出力
df.to_csv('ファイル名.csv', index=False)

参考

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?