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")