У меня огромный массив данных с сотнями столбцов и сотнями тысяч строк. Я обрабатываю несколько столбцов, используя pd.crosstab
и melt
, чтобы получить данные в формате, который может быть легко нанесен на график. Фрейм данных df
выглядит следующим образом:
Time Speed Height
1 100 200
2 150 220
3 500 270
4 500 270
5 900 245
6 150 269
7 100 220
Я просто подсчитываю количество экземпляров в каждой точке скорости и высоты и отображаю их на графике рассеяния. ;
new_df = pd.crosstab(df['Speed'], df['Height'].fillna('n/a'))
plot_df = new_df.reset_index()
plot_df = plot_df.melt(id_vars="Speed")
plot_df = plot_df.rename(columns={"index": "Speed",
"variable": "Height",
"value": "Count"})
Я использую график, поэтому я могу использовать новый столбец Count
в качестве размера маркера на графике, но я также использую его в hovertext для отображения значения счетчика вместе с X & Значения Y для этой точки. plot_df
в конечном итоге выглядит как;
Speed Height Count
100 200 1
150 200 0
500 200 0
900 200 0
500 200 0
100 220 1
150 220 1
500 220 0
900 220 0
500 220 0
100 245 0
150 245 0
500 245 0
900 245 1
500 245 0
100 269 0
150 269 1
500 269 0
900 269 0
500 269 0
100 270 0
150 270 0
500 270 2
900 270 0
500 270 0
Это дало мне идею каким-то образом связать данные времени с данными кросс-таблицы и далее с plot_df
, чтобы я мог использовать их как данные при наведении курсора и не найти никакой полезной информации о том, как это сделать.
Как я могу это сделать? Вывод будет выглядеть примерно так:
Speed Height Count Time/Index
100 200 1 1
150 200 0 0
500 200 0 0
900 200 0 0
500 200 0 0
100 220 1 7
150 220 1 2
500 220 0 0
900 220 0 0
500 220 0 0
100 245 0 0
150 245 0 0
500 245 0 0
900 245 1 5
500 245 0 0
100 269 0 0
150 269 1 6
500 269 0 0
900 269 0 0
500 269 0 0
100 270 0 0
150 270 0 0
500 270 2 3, 4
900 270 0 0
500 270 0 0