2016-03-25 40 views
1

Birden fazla anket katılımcısının birden fazla bilgi parçasını izlemek için giyilebilir teknolojiyi kullanarak birden çok müzik parçasını dinlediği bir deneme gerçekleştirdim, iki örnek BPM (Kalp Hızı) ve T (Vücut ısısı). Amaç, her bir müzik parçasının (kullanıcı geri bildirimleri ile karakterize edilen) insan duyguları üzerindeki etkisini ölçmektir.Python Pandalar: Birden çok kullanıcı için birden fazla öznitelik için birden çok zaman aralığı değişkenini depolayın

/user_1 
    /BPM 
     song_1.txt 
      76 
      78 
     song_2.txt 
      76 
      78 
      85 
    /T 
     song_1.txt 
      35.7 
      35.3 
      35.3 
      35.3 
      35.3 
     song_2.txt 
      32.2 
      32.4 
      37.8 
      32.4 
      37.8 

Her bir .txt dosya olabilir: tüm verileri aşağıdaki yapıya sahip birden dizinleri (bir metin dosyasındaki her satır bir giriş vardır) .txt dosyalarına saklanmış anda

giyilebilir cihaz iletimi için zaman uzunluğu ve şarkı uzunluğu gibi değişkenler nedeniyle farklı bir uzunluk. Örneğin, aynı şarkı için bile, BPM ve T için zaman serileri farklı uzunluklarda olabilir.

Tüm dosyaların değerlerini okumak ve okumak için Python kodunu zaten yazdım. Şu anda

, ben aşağıdaki gibi bir DataFrame oluşturma düşünüyorum:

User_ID Song_ID BPM  T 
1  1  [65,...] [36,...] 
1  2  [65,...] [36,...] 
2  1  [65,...] [36,...] 
2  2  [65,...] [36,...] 

Ama zor verilerin standartlaştırılması gibi görevleri yapabilir her hücrede bir dizi depolama endişeliyim - Şimdi merak ediyorum orada Bunu Pandalar'da saklamak için MultiIndex'den yararlanmak için daha iyi bir yol var mı?

+1

Kullanıldığından daha az hataya eğilimlidir x xarray' kütüphanesine baktınız mı? Bilimsel veri analizi için tasarlanmıştır ve Panda'ları çok boyutlu dizilere genişletir. –

+0

Kütüphane iyi görünüyor, bu özel kullanım durumunda verebileceğiniz başka tavsiyeler var mı? – jfive

cevap

1

Veri kareleri dikteleriyle çalışmanın daha kolay olacağını düşünüyorum. Hücrelerde listelere sahip olmak, sizin durumunuzda kaçınılması gereken oldukça fazla çaba gerektirir.

Her song_id için durum için en yararlı veri tipleri de bir DataFrame olması olacağını tahmin ediyorum. Her kullanıcı için sahip olduğunuz veriler biraz farklı olsa da, hala NaN s ile çalışabilirsiniz. Verileriniz bir TimeSeries'dir, bu nedenle Ekseniniz olarak Time olmalıdır. Muhtemelen tam zamana sahip olmak istemeyeceksiniz, ancak şarkının başlamasından bu yana geçen saniye sayısı.

Örnek yapısı: Alternatif olarak

TimeStamp BPM_user1 BPM_user2 
1  65  34 
2  64  35 
3  66  39 
4  69  40 

, sen (seviye 1 Metrik 0 seviyesinde ve kullanıcı kimliği olan) bir çok sütun indeksi kullanabilir

Örnek:

  BPM   T 
TimeStamp user1 user2 user1 user2 
1  65  80  34  38 
2  64  78  35  37 
3  66  77  39  37 
4  69  76  40  37 

Çok sayıda metriğe özel dönüşümleriniz varsa, o saniye Bu worklfow genellikle daha kolaydır

for songid, df in df_dict.items(): 
     *do analysis* 

: analizinizi PERFORMA için

df_dict = { 
    'song1': read_df(song_id=1), 
    'song2': read_df(song_id=2), 
} 

sonra kolayca yineleyebilirsiniz: yaklaşım

Sonra da bütün dataframes tutmak için dict kullanırsınız iyidir pd.Panel

+0

Gerçekten çok iyi düşünülmüş, çok teşekkürler! – jfive