In [2]:
__author__ = 'marion'
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
In [3]:
#load OPenBCI EEG data
df = pd.read_csv("../data/jim_10filt_clean.csv", index_col = 'time')
#df = pd.read_csv("../data/motor_image1.csv", index_col = 'time')
df
Out[3]:
channel_0
channel_1
channel_2
channel_3
channel_4
channel_5
channel_6
channel_7
tag
time
1.407623e+09
0.060924
0.234627
0.169399
0.049241
0.062268
0.094208
0.024906
0.163164
0
1.407623e+09
0.060563
0.234358
0.169026
0.048893
0.061684
0.093850
0.024665
0.163382
0
1.407623e+09
0.060829
0.234428
0.169369
0.049006
0.062125
0.094021
0.024889
0.163201
0
1.407623e+09
0.061117
0.234705
0.169827
0.049346
0.062593
0.094386
0.025124
0.162996
0
1.407623e+09
0.060999
0.234644
0.169553
0.049271
0.062334
0.094269
0.024969
0.163119
0
1.407623e+09
0.060593
0.234379
0.169060
0.048905
0.061768
0.093883
0.024664
0.163309
0
1.407623e+09
0.060762
0.234407
0.169213
0.048921
0.061988
0.093922
0.024830
0.163275
0
1.407623e+09
0.061182
0.234696
0.169699
0.049339
0.062622
0.094387
0.025164
0.163026
0
1.407623e+09
0.060987
0.234597
0.169592
0.049276
0.062410
0.094323
0.024971
0.163023
0
1.407623e+09
0.060686
0.234439
0.169183
0.048995
0.061871
0.093983
0.024728
0.163280
0
1.407623e+09
0.060731
0.234458
0.169191
0.048921
0.061871
0.093913
0.024793
0.163436
0
1.407623e+09
0.061167
0.234690
0.169749
0.049319
0.062623
0.094400
0.025155
0.163025
0
1.407623e+09
0.061121
0.234751
0.169698
0.049383
0.062509
0.094416
0.025102
0.163150
0
1.407623e+09
0.060854
0.234633
0.169324
0.049141
0.062009
0.094099
0.024841
0.163388
0
1.407623e+09
0.060676
0.234467
0.169218
0.048898
0.061763
0.093852
0.024783
0.163492
0
1.407623e+09
0.061170
0.234754
0.169704
0.049307
0.062550
0.094306
0.025157
0.163195
0
1.407623e+09
0.061154
0.234792
0.169724
0.049412
0.062561
0.094433
0.025156
0.163152
0
1.407623e+09
0.060881
0.234603
0.169386
0.049188
0.062141
0.094161
0.024862
0.163249
0
1.407623e+09
0.060630
0.234392
0.169123
0.048900
0.061719
0.093867
0.024764
0.163447
0
1.407623e+09
0.061064
0.234612
0.169651
0.049229
0.062461
0.094285
0.025102
0.163115
0
1.407623e+09
0.061154
0.234732
0.169791
0.049429
0.062610
0.094500
0.025169
0.163070
0
1.407623e+09
0.060952
0.234672
0.169479
0.049277
0.062258
0.094268
0.024891
0.163286
0
1.407623e+09
0.060645
0.234436
0.169119
0.048931
0.061733
0.093906
0.024734
0.163504
0
1.407623e+09
0.061003
0.234549
0.169542
0.049150
0.062328
0.094202
0.025029
0.163225
0
1.407623e+09
0.061191
0.234744
0.169878
0.049439
0.062655
0.094506
0.025196
0.163054
0
1.407623e+09
0.061083
0.234682
0.169685
0.049358
0.062340
0.094336
0.025033
0.163232
0
1.407623e+09
0.060727
0.234536
0.169205
0.049038
0.061780
0.093978
0.024805
0.163542
0
1.407623e+09
0.060940
0.234569
0.169452
0.049117
0.062173
0.094118
0.024986
0.163346
0
1.407623e+09
0.061264
0.234856
0.169834
0.049477
0.062686
0.094514
0.025255
0.163151
0
1.407623e+09
0.061085
0.234769
0.169607
0.049383
0.062437
0.094383
0.025071
0.163204
0
1.407623e+09
0.060668
0.234457
0.169206
0.049022
0.061856
0.094015
0.024732
0.163329
0
1.407623e+09
0.060784
0.234452
0.169340
0.049016
0.062028
0.094042
0.024843
0.163291
0
1.407623e+09
0.061219
0.234781
0.169820
0.049451
0.062675
0.094503
0.025156
0.163094
0
1.407623e+09
0.061165
0.234862
0.169718
0.049477
0.062494
0.094461
0.025092
0.163291
0
1.407623e+09
0.060822
0.234628
0.169332
0.049158
0.061954
0.094116
0.024845
0.163400
0
1.407623e+09
0.060763
0.234474
0.169303
0.048992
0.061877
0.093988
0.024844
0.163424
0
1.407623e+09
0.061236
0.234814
0.169917
0.049412
0.062637
0.094464
0.025198
0.163155
0
1.407623e+09
0.061153
0.234795
0.169771
0.049441
0.062535
0.094489
0.025170
0.163153
0
1.407623e+09
0.060887
0.234610
0.169366
0.049187
0.062066
0.094176
0.024887
0.163342
0
1.407623e+09
0.060698
0.234424
0.169112
0.048931
0.061777
0.093892
0.024806
0.163486
0
1.407623e+09
0.061173
0.234752
0.169667
0.049325
0.062527
0.094339
0.025125
0.163192
0
1.407623e+09
0.061140
0.234784
0.169744
0.049438
0.062564
0.094462
0.025115
0.163100
0
1.407623e+09
0.060911
0.234625
0.169444
0.049236
0.062195
0.094222
0.024902
0.163231
0
1.407623e+09
0.060669
0.234473
0.169111
0.048975
0.061735
0.093912
0.024813
0.163502
0
1.407623e+09
0.061069
0.234648
0.169611
0.049273
0.062432
0.094266
0.025072
0.163161
0
1.407623e+09
0.061194
0.234783
0.169862
0.049475
0.062631
0.094486
0.025157
0.163108
0
1.407623e+09
0.060971
0.234700
0.169585
0.049321
0.062298
0.094257
0.024953
0.163211
0
1.407623e+09
0.060626
0.234469
0.169081
0.048980
0.061720
0.093898
0.024713
0.163476
0
1.407623e+09
0.060978
0.234619
0.169431
0.049183
0.062279
0.094149
0.024929
0.163302
0
1.407623e+09
0.061204
0.234828
0.169760
0.049478
0.062658
0.094485
0.025140
0.163122
0
1.407623e+09
0.061072
0.234769
0.169567
0.049380
0.062374
0.094340
0.025043
0.163234
0
1.407623e+09
0.060690
0.234478
0.169152
0.049010
0.061802
0.093958
0.024777
0.163439
0
1.407623e+09
0.060896
0.234536
0.169387
0.049079
0.062157
0.094094
0.024941
0.163318
0
1.407623e+09
0.061236
0.234843
0.169824
0.049457
0.062677
0.094518
0.025211
0.163112
0
1.407623e+09
0.061059
0.234734
0.169639
0.049358
0.062468
0.094393
0.025032
0.163135
0
1.407623e+09
0.060717
0.234446
0.169298
0.049014
0.061873
0.094009
0.024797
0.163318
0
1.407623e+09
0.060792
0.234473
0.169326
0.048989
0.062005
0.093978
0.024906
0.163344
0
1.407623e+09
0.061206
0.234831
0.169768
0.049410
0.062680
0.094454
0.025200
0.163091
0
1.407623e+09
0.061134
0.234825
0.169641
0.049418
0.062518
0.094400
0.025115
0.163234
0
1.407623e+09
0.060782
0.234609
0.169257
0.049136
0.061975
0.094080
0.024781
0.163397
0
...
...
...
...
...
...
...
...
...
16898 rows × 9 columns
In [8]:
#Show some simple stats for each channel
print df.describe()
#Mean of channel_0
channel_0_mean = df['channel_0'].mean()
print "==> channel_0 mean : %s" % channel_0_mean
#30th percentile of channel_0
channel_0_q30 = df['channel_0'].quantile(q=0.3)
print "==> channel_1 30th percentile : %s" % channel_0_q30
#Plot tag (class attribute)
df['tag'].plot(title="tag")
channel_0 channel_1 channel_2 channel_3 channel_4 \
count 16898.000000 16898.000000 16898.000000 16898.000000 16898.000000
mean 0.060581 0.234976 0.169115 0.048947 0.060877
std 0.000823 0.000782 0.000825 0.000857 0.000927
min 0.058706 0.233313 0.167168 0.046915 0.058386
25% 0.060027 0.234489 0.168528 0.048355 0.060202
50% 0.060508 0.234825 0.169075 0.048946 0.060799
75% 0.061051 0.235205 0.169608 0.049513 0.061438
max 0.063531 0.238387 0.171955 0.051835 0.064454
channel_5 channel_6 channel_7 tag
count 16898.000000 16898.000000 16898.000000 16898.000000
mean 0.093356 0.024358 0.163403 48.707539
std 0.000788 0.000820 0.000699 32.205042
min 0.091784 0.022494 0.162022 0.000000
25% 0.092786 0.023805 0.163040 0.000000
50% 0.093283 0.024279 0.163315 70.000000
75% 0.093780 0.024835 0.163526 70.000000
max 0.096187 0.027219 0.165995 70.000000
[8 rows x 9 columns]
==> channel_0 mean : 0.0605810489199
==> channel_1 30th percentile : 0.0601130843163
Out[8]:
<matplotlib.axes.AxesSubplot at 0x10ed614d0>
In [16]:
df.keys()
Out[16]:
Index([u'channel_0', u'channel_1', u'channel_2', u'channel_3', u'channel_4', u'channel_5', u'channel_6', u'channel_7', u'tag'], dtype='object')
In [17]:
channels = [k for k in df.keys() if k != 'tag']
In [18]:
channels
Out[18]:
['channel_0',
'channel_1',
'channel_2',
'channel_3',
'channel_4',
'channel_5',
'channel_6',
'channel_7']
In [19]:
for c in channels:
plt.figure(c)
df[c].plot(figsize=(20,5), title=c)
In [20]:
var_channel1 = pd.rolling_var(df['channel_1'], 100)
mean_channel1 = pd.rolling_mean(df['channel_1'], 100)
In [21]:
var_channel1.plot()
plt.figure()
mean_channel1.plot()
Out[21]:
<matplotlib.axes.AxesSubplot at 0x10b7e6210>
In [22]:
df[channels].plot(figsize=(20,5))
Out[22]:
<matplotlib.axes.AxesSubplot at 0x10b721c50>
In [23]:
df[channels].plot(kind='scatter', x='channel_1', y='channel_2')
Out[23]:
<matplotlib.axes.AxesSubplot at 0x10e49d690>
In [24]:
tag_0 = df[df['tag'] == 0]
tag_70 = df[df['tag'] == 70]
tag_70[channels].plot()
Out[24]:
<matplotlib.axes.AxesSubplot at 0x10d0640d0>
In [25]:
# .index is to build an index
idx_0 = df.index[df['tag'] == 0]
idx_70 = df.index[df['tag'] == 70]
# .ix is to use the index
df.ix[idx_0]
Out[25]:
channel_0
channel_1
channel_2
channel_3
channel_4
channel_5
channel_6
channel_7
tag
time
1.407623e+09
0.060924
0.234627
0.169399
0.049241
0.062268
0.094208
0.024906
0.163164
0
1.407623e+09
0.060563
0.234358
0.169026
0.048893
0.061684
0.093850
0.024665
0.163382
0
1.407623e+09
0.060829
0.234428
0.169369
0.049006
0.062125
0.094021
0.024889
0.163201
0
1.407623e+09
0.061117
0.234705
0.169827
0.049346
0.062593
0.094386
0.025124
0.162996
0
1.407623e+09
0.060999
0.234644
0.169553
0.049271
0.062334
0.094269
0.024969
0.163119
0
1.407623e+09
0.060563
0.234358
0.169026
0.048893
0.061684
0.093850
0.024665
0.163382
0
1.407623e+09
0.060829
0.234428
0.169369
0.049006
0.062125
0.094021
0.024889
0.163201
0
1.407623e+09
0.061117
0.234705
0.169827
0.049346
0.062593
0.094386
0.025124
0.162996
0
1.407623e+09
0.060999
0.234644
0.169553
0.049271
0.062334
0.094269
0.024969
0.163119
0
1.407623e+09
0.060563
0.234358
0.169026
0.048893
0.061684
0.093850
0.024665
0.163382
0
1.407623e+09
0.060829
0.234428
0.169369
0.049006
0.062125
0.094021
0.024889
0.163201
0
1.407623e+09
0.061117
0.234705
0.169827
0.049346
0.062593
0.094386
0.025124
0.162996
0
1.407623e+09
0.060999
0.234644
0.169553
0.049271
0.062334
0.094269
0.024969
0.163119
0
1.407623e+09
0.060563
0.234358
0.169026
0.048893
0.061684
0.093850
0.024665
0.163382
0
1.407623e+09
0.060829
0.234428
0.169369
0.049006
0.062125
0.094021
0.024889
0.163201
0
1.407623e+09
0.061117
0.234705
0.169827
0.049346
0.062593
0.094386
0.025124
0.162996
0
1.407623e+09
0.060999
0.234644
0.169553
0.049271
0.062334
0.094269
0.024969
0.163119
0
1.407623e+09
0.060593
0.234379
0.169060
0.048905
0.061768
0.093883
0.024664
0.163309
0
1.407623e+09
0.060762
0.234407
0.169213
0.048921
0.061988
0.093922
0.024830
0.163275
0
1.407623e+09
0.061182
0.234696
0.169699
0.049339
0.062622
0.094387
0.025164
0.163026
0
1.407623e+09
0.060987
0.234597
0.169592
0.049276
0.062410
0.094323
0.024971
0.163023
0
1.407623e+09
0.060593
0.234379
0.169060
0.048905
0.061768
0.093883
0.024664
0.163309
0
1.407623e+09
0.060762
0.234407
0.169213
0.048921
0.061988
0.093922
0.024830
0.163275
0
1.407623e+09
0.061182
0.234696
0.169699
0.049339
0.062622
0.094387
0.025164
0.163026
0
1.407623e+09
0.060987
0.234597
0.169592
0.049276
0.062410
0.094323
0.024971
0.163023
0
1.407623e+09
0.060593
0.234379
0.169060
0.048905
0.061768
0.093883
0.024664
0.163309
0
1.407623e+09
0.060762
0.234407
0.169213
0.048921
0.061988
0.093922
0.024830
0.163275
0
1.407623e+09
0.061182
0.234696
0.169699
0.049339
0.062622
0.094387
0.025164
0.163026
0
1.407623e+09
0.060987
0.234597
0.169592
0.049276
0.062410
0.094323
0.024971
0.163023
0
1.407623e+09
0.060593
0.234379
0.169060
0.048905
0.061768
0.093883
0.024664
0.163309
0
1.407623e+09
0.060762
0.234407
0.169213
0.048921
0.061988
0.093922
0.024830
0.163275
0
1.407623e+09
0.061182
0.234696
0.169699
0.049339
0.062622
0.094387
0.025164
0.163026
0
1.407623e+09
0.060987
0.234597
0.169592
0.049276
0.062410
0.094323
0.024971
0.163023
0
1.407623e+09
0.060686
0.234439
0.169183
0.048995
0.061871
0.093983
0.024728
0.163280
0
1.407623e+09
0.060731
0.234458
0.169191
0.048921
0.061871
0.093913
0.024793
0.163436
0
1.407623e+09
0.061167
0.234690
0.169749
0.049319
0.062623
0.094400
0.025155
0.163025
0
1.407623e+09
0.061121
0.234751
0.169698
0.049383
0.062509
0.094416
0.025102
0.163150
0
1.407623e+09
0.060686
0.234439
0.169183
0.048995
0.061871
0.093983
0.024728
0.163280
0
1.407623e+09
0.060731
0.234458
0.169191
0.048921
0.061871
0.093913
0.024793
0.163436
0
1.407623e+09
0.061167
0.234690
0.169749
0.049319
0.062623
0.094400
0.025155
0.163025
0
1.407623e+09
0.061121
0.234751
0.169698
0.049383
0.062509
0.094416
0.025102
0.163150
0
1.407623e+09
0.060686
0.234439
0.169183
0.048995
0.061871
0.093983
0.024728
0.163280
0
1.407623e+09
0.060731
0.234458
0.169191
0.048921
0.061871
0.093913
0.024793
0.163436
0
1.407623e+09
0.061167
0.234690
0.169749
0.049319
0.062623
0.094400
0.025155
0.163025
0
1.407623e+09
0.061121
0.234751
0.169698
0.049383
0.062509
0.094416
0.025102
0.163150
0
1.407623e+09
0.060686
0.234439
0.169183
0.048995
0.061871
0.093983
0.024728
0.163280
0
1.407623e+09
0.060731
0.234458
0.169191
0.048921
0.061871
0.093913
0.024793
0.163436
0
1.407623e+09
0.061167
0.234690
0.169749
0.049319
0.062623
0.094400
0.025155
0.163025
0
1.407623e+09
0.061121
0.234751
0.169698
0.049383
0.062509
0.094416
0.025102
0.163150
0
1.407623e+09
0.060854
0.234633
0.169324
0.049141
0.062009
0.094099
0.024841
0.163388
0
1.407623e+09
0.060676
0.234467
0.169218
0.048898
0.061763
0.093852
0.024783
0.163492
0
1.407623e+09
0.061170
0.234754
0.169704
0.049307
0.062550
0.094306
0.025157
0.163195
0
1.407623e+09
0.061154
0.234792
0.169724
0.049412
0.062561
0.094433
0.025156
0.163152
0
1.407623e+09
0.060854
0.234633
0.169324
0.049141
0.062009
0.094099
0.024841
0.163388
0
1.407623e+09
0.060676
0.234467
0.169218
0.048898
0.061763
0.093852
0.024783
0.163492
0
1.407623e+09
0.061170
0.234754
0.169704
0.049307
0.062550
0.094306
0.025157
0.163195
0
1.407623e+09
0.061154
0.234792
0.169724
0.049412
0.062561
0.094433
0.025156
0.163152
0
1.407623e+09
0.060854
0.234633
0.169324
0.049141
0.062009
0.094099
0.024841
0.163388
0
1.407623e+09
0.060676
0.234467
0.169218
0.048898
0.061763
0.093852
0.024783
0.163492
0
1.407623e+09
0.061170
0.234754
0.169704
0.049307
0.062550
0.094306
0.025157
0.163195
0
...
...
...
...
...
...
...
...
...
20688 rows × 9 columns
In [26]:
plt.figure()
df['channel_1'].ix[idx_0].plot()
df['channel_1'].ix[idx_70].plot(color='red')
Out[26]:
<matplotlib.axes.AxesSubplot at 0x10cff2610>
In [9]:
#df[channels].plot(kind='scatter', x='channel_1', y='channel_2')
Content source: marionleborgne/nupic.eeg
Similar notebooks: