<jupyter_start><jupyter_text>csvファイルから工程能力指数(Cpk)など適当に計算する<jupyter_code># Dependencies
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy

from numpy import random
%matplotlib inline
# 環境変数
src_path = "./data.csv"
data_label = "measure" # 計算に使うデータの列名<jupyter_output><empty_output><jupyter_text>適当なテストデータを作る、すでにある場合は不要<jupyter_code># テストデータの設定
test_average = 3
test_sigma = 0.1
test_num = 100

src = [random.normal(test_average, test_sigma) for x in range(0, test_num)]
test_df = pd.DataFrame({data_label: src})
test_df.to_csv(src_path)
test_df # jupyter上で確認用<jupyter_output><empty_output><jupyter_text>ここから本命 とりあえずデータを読む、ロット分けなどがある場合はいい感じに拡張して DataFrameで別カラムの値でフィルタすれば、ロットごとにDataFrameつくって計算できるように<jupyter_code># データ読み込み
src_df = pd.read_csv(src_path, index_col=0)

# とりあえずデータの中身を眺めよう

#一応散布図とかも見たい
src_df.plot(kind='bar')
plt.show()
sns.distplot(src_df[data_label], bins = 30)
plt.show()

src_df.describe() # 統計情報
# dfからCp, Cpkを計算。今回は観測値が正規分布している前提で、所々の変換は省略

def compute_cpk(df, usl, lsl):
    average = df.mean()
    sigma = df.std()
    
    cp = (usl - lsl) / (6 * sigma)
    cpk = min((usl - average) / (3 * sigma), (average - lsl) / (3 * sigma))
    return (cp, cpk)

# 今回は適当なデータ(test_average=3に対して、2.5~3.5を規格値として算出
(result_cp, result_cpk) = compute_cpk(src_df[data_label], 3.5, 2.5)
print("Cp: {}, Cpk: {}".format(result_cp, result_cpk))<jupyter_output>Cp: 1.5959848902643887, Cpk: 1.5754429096055702
{'fraction_non_alphanumeric': 0.1288981288981289, 'fraction_numerical': 0.038808038808038806, 'mean_word_length': 6.32994923857868, 'pattern_counts': {'":': 0, '<': 12, '<?xml version=': 0, '>': 12, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '288827', 'license': 'MIT', 'n_tokens_mistral': 826, 'n_tokens_neox': 782, 'n_words': 105, 'path': 'jupyter-qc.ipynb', 'repo_name': 'kamiyaowl/jupyter-qc', 'size': '1443'}