Pandas / NumPy | データ操作

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

DataFrame 型

# DataFrame 型に変換
df = pd.DataFrame(list)

# 転地
print(df.T)

内容の確認

# 四分位数や平均などをまとめて表示
print(df.describe())

# 先頭から〇個の行を表示
print(df.head(3))

# カラム名
print(df.columns)

# 最小値
print(min(df['列名']))

# 最大値
print(max(df['列名']))

# 相関係数
print(df.corr())

抜き出し / 追加 / 削除

# すべての行の 0 列目を抜き出す | 戻り値:Series 型
t = df.iloc[:, 0]

# すべての行の 1 列目以降を抜き出す | 戻り値:ndarray 型
t = df.iloc[:, 1:].values

# 指定した列名の列を抜き出す | 戻り値:Series 型
column_label = '列名1'
col_ = df[column_label]

# 新規列の作成 'Target' 列の追加
df['列名'] = ndarray

並べ替え

# 昇順で並び替え
column_label = '列名'
sort_df = df.sort_values(column_label  )
print(sort_df .head())

# 降順で並び替え
column_label = '列名'
sort_df = df.sort_values(column_label, ascending=False)
print(sort_df .head())

Series 型

# Series 型へ変換
series = pd.Series(list)

# 値の確認
series['行名']

# 行名リスト
series.index.values

ndarray 型

# ndarray 型へ変換
x.values

行列の操作

# 平均値 : DataFrame 型
column_label = '列名'
mean = df[column_label].mean()

# 平均値 : リスト型 / ndarray 型
test_A_average = sum(test_A) / len(test_A)

# 中央値
import statistics
test_A_median = statistics.median(test_A)

# 範囲
test_A_range = max(test_A) - min(test_A)

重複行の処理

# 行が重複しているか確認
df.duplicated(keep=False)

# 重複行 の個数確認
df.duplicated(keep=False).value_counts()

# 重複行の削除
df = df.drop_duplicates()

欠損値の処理

# 値の種類を取得
df['列名'].unique()

# 欠損値の確認
df.isnull()

# 欠損値の個数
df.isnull().sum()

欠損値の除去

# 行を丸ごと除去
df = df.dropna(subset=['列名'])

# 列を丸ごと除去
df = df.drop(labels='列名', axis=1)

欠損値の補完

# 平均値で補完
df = df.fillna({'列名':df['列名'].mean()})

# 中央値で補完
column_label = '列名'
df = df.fillna({col_label :df[column_label].median()})

# 最頻値で補完
column_label = '列名'
df = df.fillna({column_label:df[column_label].mode()[0]})

外れ値の除去

3σ法 による外れ値の行の削除

# 3σ法 による外れ値の行の削除
column_label = '列名'
mu = df[column_label].mean()
sigma = df[column_label].std()
df2 = df[(mu - 3 * sigma <= df[column_label]) & (df[column_label] <= mu + 3 * sigma)]

CSV

# データの読み込み
df = pd.read_csv('path')
# データフレームを csv で出力
df.to_csv("test.csv")
# csv の書き出し | windows
pd.Series(data, name='列名').to_csv('filename.csv', index=None, line_terminator='\n')
# csv の書き出し | mac
pd.Series(data, name='列名').to_csv('filename.csv', index=None)