必要に迫られて、数年ぶりのPythonにチャレンジ。
自分用のメモです。
環境構築
PythonじゃなくてAnacondaをインストールするんだった。
ここからダウンロード↓↓↓
https://www.anaconda.com/products/distribution
教科書
前に買ってたこれに沿ってはじめてみる。
https://www.shoeisha.co.jp/book/detail/9784798155067
パッケージの読み込み
基本のパッケージ
import numpy as np
import pandas as pd
使いそうなコマンドメモ
配列の作成は np.array
サイズを確認するときは 配列名.shape
sample_array_2 = np.array(
[[1,2,3,4,5],[6,7,8,9,10]])
sample_array_2.shape
データの読み込み pd.read_csv("ファイル名")
pd.read_clipboard()
file_data = pd.read_csv("data(0-49).csv")
file_data = pd.read_clipboard()
データフレームのサイズも .shape
で確認できる。
file_data.shape
列名の取得 .columns
columnname = file_data.columns
列名を確認して、4番から28番までのデータを別データフレームに入れる
※行番号、列番号は0からはじまる
data = file_data.iloc[:,4:28]
全体に欠損値がひとつでも含まれているか確認
print(data.isnull().values.sum() != 0)
行ごとに欠損値をひとつでも含むか判定
print(data.isnull().any(axis=1))
printで配列を省略せずに表示する
pd.set_option('display.max_rows', 最大表示列数)
pd.set_option('display.max_columns', 最大表示行数)
クラスター分析(k-means)
# ライブラリのインポート
from sklearn.cluster import KMeans
clu = KMeans(n_clusters=4) # クラスター数を指定
# dataにクラスタ分析をしてclass列に分類結果を格納
data["class"] = clu.fit_predict(data)
# 各クラスタのサンプル数を確認
print(data["class"].value_counts())
# 各クラスタの平均点(クラスタ中心)を出力
print(data.groupby("class").mean()
# クラスタ中心の各項目の差を求める
clu_maxmin = clu_center.max(axis=0)-clu_center.min(axis=0)
# クラスタ中心と同じ配列に入れる
a = clu_center.T
a["maxmin"] = clu_maxmin # colum名を"maxmin"として配列aに追加する
# maxmin の値が大きい順に並べ替える
a.sort_values("maxmin", ascending=False)
グラフ化
# グラフを描画するライブラリ
from matplotlib import pyplot as plt
# グラフをJupiter Notebookに表示させるための指定
%matplotlib inline
# 配列aのデータを、maxmin列の値の大きい順にプロットする
plt.plot(a.sort_values("maxmin", ascending=False))
ランダムサンプリング
sample()
でランダムに選んでくれる
# 抽出する行数を指定
data.sample(n=10)
# 割合を指定
data.sample(frac=0.8)
行ごとに中心化をする
それぞれの行のデータが平均値=0になるように変換したい。
転置して列ごとに中心化し、転置して戻すのが一番早そう。
data2 = data.T - data.T.mean()
data_centered = data2.T