Построение кумулятивного распределения по даннымPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Построение кумулятивного распределения по данным

Сообщение Anonymous »

У меня есть большой объем данных для построения ECDF, но я запутался, поэтому решил использовать небольшой подмножество данных, которое все еще не имело для меня смысла (как полное по сравнению с тем, что я прочитал из источника).< /p>
Для этого я создал синтетический MWE, чтобы воспроизвести проблему. Скажем, у меня есть следующий df:

Код: Выделить всё

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import seaborn as sns

sns.set(style="whitegrid")

# DataFrame
df = pd.DataFrame(
{'id': [54, 54, 54, 54, 54, 16, 16, 16, 50, 50, 28, 28, 28, 19, 19, 32, 32, 32, 81, 81, 81, 81, 81],
'user_id': [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 84, 84, 84, 84, 84, 179, 179, 179, 179, 179],
'trip_id': [101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, 841, 841, 841, 841, 841, 1796, 1796,
1796, 1796, 1796],
'travel_mode': ['train', 'train', 'train', 'train', 'train', 'walk', 'walk', 'walk', 'train', 'train', 'train',
'train', 'train', 'taxi', 'taxi', 'bus', 'bus', 'bus', 'train', 'train', 'train', 'train', 'train']}
)
В этом примере 50 % поездок (2/4) совершил 1 пользователь. Я хочу построить график количества поездок на одного пользователя. Итак, действовали следующим образом:

Код: Выделить всё

# number of trips per user
trips_per_user = df.groupby('user_id')['trip_id'].nunique()

trips_per_user
trip_id
user_id
10       2
84       1
179      1

# Create a DataFrame for plotting
plot_data = trips_per_user.reset_index(name='num_trips')

plot_data
user_id num_trips
0     10     2
1     84     1
2    179     1
Теперь построим график ECDF.

Код: Выделить всё

# ECDF
plt.figure(figsize=(5, 4))
sns.ecdfplot(data=plot_data, x='num_trips', stat='proportion', complementary=False)
plt.xlabel('Number of Trips')
plt.ylabel('Cumulative Proportion')
Вывод:
Изображение
Очевидно, я делаю это неправильно.
  • 1 поездка была совершена в 50% данных (а не примерно в 70%, как в сюжете получается).
  • Кривая ECDF не начинается с 0.
Требуемый ответ:
Я хотел чтобы построить что-то вроде ниже (из источника):
Изображение


Подробнее здесь: https://stackoverflow.com/questions/792 ... -from-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»