Zaczynam się uczyć Pand i próbuję znaleźć najbardziej Pythonowe (lub panda-thonic?) Sposoby wykonywania pewnych zadań.Plotting results of Pandas GroupBy
Załóżmy, że mamy DataFrame z kolumn A, B i C.
- Kolumna A zawiera wartości logicznych: każdy wiersz to jest wartość nie jest ani prawdziwe, czy fałszywe.
- Kolumna B ma kilka ważnych wartości, które chcemy wydrukować.
To, co chcemy odkryć, to subtelne rozróżnienia między wartościami B dla wierszy, które mają A ustawione na fałsz, a wartości B dla wierszy, które mają A, są prawdziwe.
Innymi słowy, jak mogę pogrupować według wartości kolumny A (prawda lub fałsz), a następnie wykreślić wartości kolumny B dla obu grup na tym samym wykresie? Dwa zestawy danych powinny być inaczej pokolorowane, aby móc odróżnić punkty.
Następnie dodajmy kolejną funkcję do tego programu: przed wykresów, chcemy obliczyć inną wartość dla każdego wiersza i przechowywać go w kolumnie D. Wartość ta jest średnią wszystkich danych przechowywanych w B dla całego na pięć minut przed zapisem - ale tylko to wiersze, które mają taką samą wartość logiczną przechowywane w A.
innymi słowy, jeśli mam wiersz gdzie A=True
i time=t
chcę obliczyć wartość dla kolumny D, które jest średnią z B dla wszystkich rekordów od czasu t-5
do t
, które mają ten sam A=True
.
W takim przypadku, w jaki sposób możemy wykonać groupby na wartościach A, zastosować to obliczenie do każdej pojedynczej grupy, a na końcu wykreślić wartości D dla dwóch grup?
Czy masz jakieś przykładowe dataframes? wygląda na to, że możesz zrobić coś takiego jak zapisanie obiektu groupby w zmiennej: 'grouped = df.groupby ('A')', następnie wykonaj pętlę for do wykreślenia: 'dla g, d w grupie: wykres (d [ "B"], kolor = g) ". Mniej więcej to samo dla drugiego pytania, w którym można użyć pandy 'rolling_mean', aby utworzyć nową kolumnę D. – herrfz