Fuwafuwa's memorandum

Fuwafuwa's memorandum

Data analysis, development, reading, daily feeling.
MENU

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SQL server: 中央値を求める

HAVING句の力

SELECT AVG(DISTINCT income)
FROM (
	SELECT T1.income
	FROM #table T1, #table T2
    GROUP BY T1.income
    HAVING SUM(CASE WHEN T2.income >= T1.income THEN 1 ELSE 0 END) >= COUNT(*) / 2
		AND SUM(CASE WHEN T2.income <= T1.income THEN 1 ELSE 0 END) >= COUNT(*) / 2 
	) data

スポンサーサイト

Python: k-meansのクラスタ数を決定するためにSSE値を図示

ネットをふわふわしていたら懐かしい図を見つけたのでコピペ。
k-meansの最適なクラスター数を調べる方法

import pandas as pd

data = pd.read_csv('file_name.csv')

##クラスタリングに必要なカラムのみarrayに
d_history = data.iloc[:,7:20]
d_history_array = d_history.as_matrix()

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

distortions = []
for i  in range(1,11):                # 1~10クラスタまで一気に計算 
    km = KMeans(n_clusters=i,
                init='k-means++',     # k-means++法によりクラスタ中心を選択
                n_init=10,
                max_iter=300,
                random_state=0)
    km.fit(d_history_array)                         # クラスタリングの計算を実行
    distortions.append(km.inertia_)   # km.fitするとkm.inertia_が得られる

plt.plot(range(1,11),distortions,marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Distortion')
plt.show()
Pythonでエルボー図書いてる人はじめて見た。

Python: pandasで読み込む際のunicode errorの対処

普段は下記のようにencodingで対処していたのですが
Python: ファイルの読み込みの際のUnicodeエラーについて
utf-8、shift-jisのどちらでもエラーが出てしまい…。

困っていた所下記ページを見つけました。
pandasでread_csv時にUnicodeDecodeErrorが起きた時の対処

下記で。

import codecs

with codecs.open("file/to/path", "r", "Shift-JIS", "ignore") as file:
    df = pd.read_table(file, delimiter=",")

##テーブル確認    
df.head()

Python: クロス集計

すぐ忘れてしまうのでメモ。

import pandas as pd
import numpy as np

pd.pivot_table(data ##pandasのデータフレーム
    , values = "val_a" ##集計する変数
    , index = ["val_b"] ##行データ
    , columns = ["val_c"] ##列データ
    , aggfunc = np.count_nonzero ##集計方法
    , fill_value = 0 ##nullになるデータは0とすると便利)

Python: ファイル読み込みの際のUnicodeエラーについて

Pythonで作成したcsvファイルをpandasで読み込もうとした際のエラー。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 3: invalid start byte
Windowsでは作成したファイルが問答無用でExcelを介して保存され文字コードが変わっているのかもしれません。
下記のようにエンコードしてあげます。
pd.read_csv('data.csv', encoding="shift-jis")
これで読み込めます。
なお、一度csvファイルをWindows上で開いてしまうと、encodingしてもエラーになります。

該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。