研究員リツのNote.

メーカーで研究員しているリツです。主にPythonの解析系のコードのメモ書きをゆるーく残しています。

PythonのPandasで上位(下位)10 %だけ抽出する(sort_valuesの話)

普段やらないヒトの解析をするにあたって、

先輩に相関で取れないなら、取り敢えず、

上位と下位だけで比較してみたらとアドバイスを貰ったので。

 

たぶんアカデミック的にはサンプル数を鬼のように増やして

相関を出すのだと思います。

民間で偉い人たちにもっとサンプルを増やす研究費を貰うために、

割り切って比較をする時にはそんな方法もあるみたいです。

 

※任意のところは好きに書き換える。

※Jupyter notebookで動かしているので塊で使うか、不要なところは省くこと

(確認のところでセルを切り替えている)

※列にサンプル、行に要素のデータテーブルCSVを用意

 

#読み込み
import pandas as pd
df = pd.read_csv("./任意.csv")
df.head() #確認

#取り敢えずデータをざっと眺める
df.describe() #確認

#ソートする
df=df.sort_values(by='任意の列名')

#下位10件取り出し
df.head(10) #確認

#下位25 %取り出し(列にサンプル数があって、25 %計算時に小数点以下切り捨て)
df.head(int(len(df)*0.25)) #確認

#CSVに書き出す時は
df2=df.head(int(len(df)*0.25))
df2.to_csv("./任意.csv") #確認

#上位を取りたいときはデータソートを降順に
df3=df.sort_values(by='任意の列名', ascending=False)
df3.head(int(len(df)*0.25)) #確認



追記:コンパクト版(何も考えずに動かす用)

# DataFrameを使うためのライブラリ
import pandas as pd
df = pd.read_csv("./df.csv")
#上位下位25 %をそれぞれ作成
df_up=df.sort_values(by='全体平均')
df_low25=df_up.head(int(len(df)*0.25))
df_down=df.sort_values(by='全体平均', ascending=False)
df_high25 = df_down.head(int(len(df)*0.25)) 
#簡易的なデータを眺める用の出力
df_high25.describe().to_csv("./mean_high.csv")
df_low25.describe().to_csv("./mean_low.csv")
#上位下位の25 %を連結してCSV出力
concat = pd.concat([df_high25,df_low25])
concat.to_csv("./concat.csv")