Как добавить метки к определенным позициям и сделать сумму значений в качестве размера графика - PullRequest
0 голосов
/ 14 мая 2019

Pandas DataFrame содержит, но не ограничивается, такими значениями:

x      y       z    
Winter Night   2222
Spring Morning 3888
Summer Day     1111
Autumn Evening 2999
...

И я извиняюсь, я не могу предоставить полный набор данных из-за NDA

используется переменная zрассчитать сумму и сделать ее размером с точку на графикеразличные размеры.По сути, я хочу вычислить сумму двух столбцов и сделать соответствующие размеры точек.

1 Ответ

0 голосов
/ 14 мая 2019

@ Шелдор считает, что в вашем примере недостаточно кода для работы, поэтому приведенное ниже может быть не совсем тем, что вы ищете.

Я преобразовал названия сезонов и времени в целые числапоскольку точечная диаграмма не может отображать строки для оси x / y.

import pandas as pd

df = pd.DataFrame(data={
    'x': ['Winter','Spring','Summer','Autumn'],
    'y': ['Night','Morning','Day','Evening'],
    'z': [2222,3888,1111,2999],
})

# convert 'x' and 'y' strings to int to enable scatter plot

season_map = {
    'Winter': 0,
    'Spring': 1,
    'Summer': 2,
    'Autumn': 3,
}

time_map = {
    'Night': 0,
    'Morning': 1,
    'Day': 2,
    'Evening': 3,
}

df.loc[:,'x_int'] = df.x.map(season_map)
df.loc[:,'y_int'] = df.y.map(time_map)

ax = df.groupby(['x_int','y_int']).z.sum().reset_index()\
    .plot.scatter(x='x_int', y='y_int', s=df['z'])

ax.set_xlabel('X')
ax.set_ylabel('Y')

enter image description here

...