Как рассчитать совместное появление явлений из данных с повторяющимися значениями, указывающими на совпадение - PullRequest
1 голос
/ 28 января 2020

В настоящее время я смотрю на одновременное возникновение различных явлений (жесты, интонация в речи) во времени. Таким образом, данные отображаются с каждой переменной как ее собственный столбец, а явления отображаются как повторяющиеся значения, когда они происходят одновременно, как:

Begin Time        End Time       g-phasing   apex   syllable    words   tones
00:00:02.000    00:00:04.266                         Zia        j'avais 
00:00:04.266    00:00:05.390    Preparation          Zia        j'avais 
00:00:05.390    00:00:05.519    Preparation           vE        j'avais 
00:00:05.519    00:00:05.852    Preparation           vE        j'avais     H*
00:00:05.852    00:00:05.910    Preparation           de        des         
00:00:05.910    00:00:05.970    Preparation           de        des 
00:00:05.970    00:00:06.236    Preparation           de        des 
00:00:06.236    00:00:06.276    Preparation           di        dizaines    
00:00:06.276    00:00:06.650    Preparation           di        dizaines    
00:00:06.650    00:00:06.795    Preparation          zEn        dizaines    
00:00:06.795    00:00:06.835    stroke               zEn        dizaines    
00:00:06.835    00:00:07.480    stroke               zEn        dizaines    
00:00:07.480    00:00:07.630    stroke        apex   zEn        dizaines    
00:00:07.630    00:00:07.857    stroke               zEn        dizaines    H*
00:00:07.857    00:00:08.080    stroke               zEn        dizaines    
00:00:08.080    00:00:08.120    stroke             ddeux        de  
00:00:08.120    00:00:08.226    Preparation        ddeux        de  
00:00:08.226    00:00:08.290    Preparation        ddeux        de  
00:00:08.290    00:00:08.900    Preparation           sy        sujets  
00:00:08.900    00:00:12.396    Preparation           sy        sujets  
00:00:12.396    00:00:12.410    stroke                sy        sujets  
00:00:12.410    00:00:12.628    stroke                ZE        sujets  
00:00:12.628    00:00:12.776    stroke        apex    ZE        sujets  
00:00:12.776    00:00:12.924    stroke                ZE        sujets  
00:00:12.924    00:00:12.990    stroke                ZE        sujets      H*
00:00:12.990    00:00:13.400    stroke                ZE        sujets  

Этот набор данных показывает, что существует два штриха (один из 00: 00: 06.795 до 00: 00: 08.120 и второе с 00: 00: 12.396 до 00: 00: 13.400)

В идеале я хотел бы иметь возможность подсчитать количество ударов в набор данных, определите, сколько совпадений со слогом с акцентом на высоту тона (здесь значение «H *» в столбце «тоны», которое соответствует слогам «zEn» и «ZE»), сколько не совпадает с тоном ударный слог, et c.

Я не уверен, стоит ли мне перемещаться по строкам и создавать счетчики, использовать ли время начала и окончания или мне следует реструктурировать данные. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 28 января 2020

Вероятно, полезно: Получить статистику для каждой группы (например, количество, среднее и т. Д. c), используя pandas GroupBy?

Пристальное рассмотрение набора данных звучит как проблема агрегации диапазона встроена. Как только вы отфильтруете строки, содержащие данные обводки, используя только что-то вроде: Как выбрать строки из DataFrame на основе значений столбцов? Я рекомендую извлечь первые два столбца в изолированный фрейм / список данных и приступить к созданию список объединенных интервалов.

initialize output_dataframe_list as an empty list For each (start, end) item in merged_intervals_list: do extract the subset of rows that have column 1>= start and column 2<=end and have the word stroke. use a groupby aggregation method on it and obtain your needed dataframe. append this dataframe containing the results of the interval into output_dataframe_list concatenate all the dataframes together to create a new dataframe using pd.concat

...