Reverse+Data+Frame
13132 ワード
Python乱数生成とデータボックスへの逆順配列
(Reverse Pandas Data Frame)
Erik Marsjaのブログで、データボックスを逆順序でソートする方法について言及されているのをネット上で見た.詳細はエリックのブログを参照
乱数の生成
numpyのrandomモジュールには乱数を生成する方法が多く,今回のデータ構築過程で用いられた2つの乱数を生成する方法はnormalとbinomialであり,詳細は以下の通りである.
1. np.random.normal
ジルコニウム
p(x)=12πσ2−−−−√e−(x−μ)22σ2 p ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2 μ μ 平均値 σ σ 標準偏差です.
は正規分布に対応し、関数フォーマットは:
コードの例は次のとおりです.
出力結果は0を平均(中心)、0.1を標準差、長さ10のランダム数列である.
2. np.random.binomial
np.random.binomial`の役割は,二項分布上のランダムサンプル点を取得することである.二項分布の確率密度関数とその展示は以下の通りである.
P(N)=(nN)pN(1−p)n−N P ( N ) = ( n N ) p N ( 1 − p ) n − N nは試験数である. pは成功の確率である. Nは成功したイベント数である.
は二項分布に対応し、関数フォーマットは n:分布パラメータ、値>=0; p:確率分布パラメータ、値は0-1の間である. size:出力の個数または形態、e.g.、(m,n,k).
コードの例は次のとおりです.
出力結果は10を分布数,0.5を確率分布パラメータ,長さ10の乱数列とした.データの準備
は、上述npを紹介する.randomにおけるnormal(正規分布)とbinomial(二項分布)はデータを構築し,蒋データはデータボックスの形式に構築した.
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Sub_id
Condition
RT
Accuracy
Gender
0
1
1
1409.502116
0
Male
1
2
1
1500.290857
1
Female
2
3
1
1490.126112
1
Male
3
4
1
1624.817239
0
Female
4
5
1
1621.716861
0
Male
##逆順で並べ替え
まず、最初の列と最後の列の対調、およびすべての列の逆順配列を含む列別逆順配列について説明します.
1.交換GenderおよびAccuracy列
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Gender
Sub_id
Condition
RT
Accuracy
0
Male
1
1
1409.502116
0
1
Female
2
1
1500.290857
1
2
Male
3
1
1490.126112
1
3
Female
4
1
1624.817239
0
4
Male
5
1
1621.716861
0
2.データ・ボックスの列を昇順に並べ替えます.[注意:アルファベット順]
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
3.すべての列は、
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Sub_id
RT
Gender
Condition
Accuracy
0
1
1409.502116
Male
1
0
1
2
1500.290857
Female
1
1
2
3
1490.126112
Male
1
1
3
4
1624.817239
Female
1
0
4
5
1621.716861
Male
1
0
##逆順で並べ替え
データボックスは、同様に行を逆順序に並べ替えることができ、操作前に以前の方法でデータを並べ替えることができる.
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
データボックスは、同様に行を逆順序に並べ替えることができ、操作前に以前の方法でデータを並べ替えることができる.
1.ilocでデータ・ボックスを逆順序でソートします.
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
29
1
0
Female
909.743587
30
28
1
0
Male
1156.069566
29
27
1
0
Female
1021.911590
28
26
1
0
Male
1095.878107
27
25
1
0
Female
1173.376446
26
2.
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
3.最後に、
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
29
1
0
Female
909.743587
30
28
1
0
Male
1156.069566
29
27
1
0
Female
1021.911590
28
26
1
0
Male
1095.878107
27
25
1
0
Female
1173.376446
26
まとめ
本稿では,2つの分布のランダム数の確立方法と,データボックスの行と列を逆順序に配列する方法を概説した.初めてこのブログに书き込みましたが、まだまだですがよろしくお愿いします.何か质问があればメッセージをください.
Escher
2018/9/15
(Reverse Pandas Data Frame)
Erik Marsjaのブログで、データボックスを逆順序でソートする方法について言及されているのをネット上で見た.詳細はエリックのブログを参照
乱数の生成
numpyのrandomモジュールには乱数を生成する方法が多く,今回のデータ構築過程で用いられた2つの乱数を生成する方法はnormalとbinomialであり,詳細は以下の通りである.
1. np.random.normal
ジルコニウム
np.random.normal
の役割は,正規(Gauss)分布上のランダムサンプル点を得ることである.正規分布は自然界でよく発生する.例えば、微小でランダムな干渉の影響を受ける多数の試料の一般的な分布を記述し、ここでは正規分布の密度関数とその解釈を以下に示す.p(x)=12πσ2−−−−√e−(x−μ)22σ2 p ( x ) = 1 2 π σ 2 e − ( x − μ ) 2 2 σ 2
は正規分布に対応し、関数フォーマットは:
numpy.random.normal(loc=0.0, scale=1.0, size=None)¶
パラメータ解釈は以下の通りである.loc
:分布の平均値(中心);scale
:分布の標準偏差(拡張または幅);size
:出力の個数または形態、e.g.、(m,n,k).コードの例は次のとおりです.
import numpy as np #
mu, sigma = 0, 0.1 #
s = np.random.normal(mu, sigma, 10) #
s #
array([ 0.16981948, -0.1163046 , -0.04132508, 0.06968584, -0.09236869,
-0.01983998, -0.00139769, 0.0211951 , -0.13173266, -0.0554029 ])
出力結果は0を平均(中心)、0.1を標準差、長さ10のランダム数列である.
2. np.random.binomial
np.random.binomial`の役割は,二項分布上のランダムサンプル点を取得することである.二項分布の確率密度関数とその展示は以下の通りである.
P(N)=(nN)pN(1−p)n−N P ( N ) = ( n N ) p N ( 1 − p ) n − N
は二項分布に対応し、関数フォーマットは
numpy.random.binomial(n, p, size=None)
であり、パラメータは以下のように解釈される.コードの例は次のとおりです.
import numpy as np #
n, p = 10, .5 #
s = np.random.binomial(n, p, 10) #
s #
array([5, 5, 6, 5, 3, 5, 5, 5, 4, 5])
出力結果は10を分布数,0.5を確率分布パラメータ,長さ10の乱数列とした.データの準備
は、上述npを紹介する.randomにおけるnormal(正規分布)とbinomial(二項分布)はデータを構築し,蒋データはデータボックスの形式に構築した.
##
import pandas as pd
import numpy as np
distracted = [1 for i in range(15)] # 15 1 list
normal_perf = [0 for i in range(15)] # 15 0 list
sex = ['Male' if i%2 == 0 else 'Female' for i in range(30)] # 0/1
rt_distracted = np.random.normal(1660, 100, 15) # 15 1660 ,100
rt_normal_perf = np.random.normal(1054, 97, 15) # 15 1054 ,197
accuracy_distracted = np.random.binomial(1, .79, 15) # 15 n=1,p=0.75
accuracy_normal_perf = np.random.binomial(1, .87, 15) # 15 n=1,p=0.85
rt = np.concatenate((rt_distracted, rt_normal_perf)) # rt_distracted rt_normal_perf
acc = np.concatenate((accuracy_distracted, accuracy_normal_perf)) # accuracy_distracted accuracy_normal_perf
distracted.extend(normal_perf) # normal_perf
subject_id = [i for i in range(1,31)] # 1-30 id
data = {'Sub_id':subject_id, 'Condition':distracted, 'RT':rt, #
'Accuracy':acc, 'Gender':sex}
data_frame = pd.DataFrame(data) #
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Sub_id
Condition
RT
Accuracy
Gender
0
1
1
1409.502116
0
Male
1
2
1
1500.290857
1
Female
2
3
1
1490.126112
1
Male
3
4
1
1624.817239
0
Female
4
5
1
1621.716861
0
Male
##逆順で並べ替え
まず、最初の列と最後の列の対調、およびすべての列の逆順配列を含む列別逆順配列について説明します.
1.交換GenderおよびAccuracy列
columns = data_frame.columns.tolist() # list
columns = columns[-1:] + columns[:-1] #
data_frame = data_frame[columns] #
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Gender
Sub_id
Condition
RT
Accuracy
0
Male
1
1
1409.502116
0
1
Female
2
1
1500.290857
1
2
Male
3
1
1490.126112
1
3
Female
4
1
1624.817239
0
4
Male
5
1
1621.716861
0
2.データ・ボックスの列を昇順に並べ替えます.[注意:アルファベット順]
data_frame = data_frame.sort_index(axis=1 ,ascending=True) #
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
3.すべての列は、
columns[::-1]
またはcolumns.reverse()
によって逆配列される.columns = data_frame.columns.tolist() # list
columns = columns[::-1] #
#columns.reverse() # 【 2】
data_frame = data_frame[columns] #
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Sub_id
RT
Gender
Condition
Accuracy
0
1
1409.502116
Male
1
0
1
2
1500.290857
Female
1
1
2
3
1490.126112
Male
1
1
3
4
1624.817239
Female
1
0
4
5
1621.716861
Male
1
0
##逆順で並べ替え
データボックスは、同様に行を逆順序に並べ替えることができ、操作前に以前の方法でデータを並べ替えることができる.
data_frame = data_frame.sort_index(axis=1 ,ascending=True) #
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
データボックスは、同様に行を逆順序に並べ替えることができ、操作前に以前の方法でデータを並べ替えることができる.
1.ilocでデータ・ボックスを逆順序でソートします.
data_frame = data_frame.iloc[::-1] # iloc
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
29
1
0
Female
909.743587
30
28
1
0
Male
1156.069566
29
27
1
0
Female
1021.911590
28
26
1
0
Male
1095.878107
27
25
1
0
Female
1173.376446
26
2.
df.sort_index
のうちaxis=0
を設けて行を逆順に並べ替えることにより、このときの逆順操作によりデータボックスの並べ替えが復元されるようにしてもよい.data_frame = data_frame.sort_index(ascending=True, axis=0) # sort_index
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
0
0
1
Male
1409.502116
1
1
1
1
Female
1500.290857
2
2
1
1
Male
1490.126112
3
3
0
1
Female
1624.817239
4
4
0
1
Male
1621.716861
5
3.最後に、
reindex
によってデータ・ボックスを再インデックスすることによって、行の逆順序配列の効果を達成することができる.data_frame = data_frame.reindex(index=data_frame.index[::-1]) # reindex
data_frame.head() #
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Accuracy
Condition
Gender
RT
Sub_id
29
1
0
Female
909.743587
30
28
1
0
Male
1156.069566
29
27
1
0
Female
1021.911590
28
26
1
0
Male
1095.878107
27
25
1
0
Female
1173.376446
26
まとめ
本稿では,2つの分布のランダム数の確立方法と,データボックスの行と列を逆順序に配列する方法を概説した.初めてこのブログに书き込みましたが、まだまだですがよろしくお愿いします.何か质问があればメッセージをください.
Escher
2018/9/15