как построить категориальные данные? - PullRequest
0 голосов
/ 24 октября 2018

В основном данные содержат информацию о machine, используемом operators для конкретных activity

df.head()

У меня есть данные, подобные следующим:

machine_name                activity                      Operator_name     start_datetime       end_datetime   reasons_for_break   duration
Yash [HMC]           PILLAR SUB ASSY MOUNTING ON BASE      Abhishek     2018-10-10 00:50:20 2018-10-10 11:51:23                       661
IMPERIAL             SPINDLE MOTOR ASSEMBLY AND MOUNTING    Abijith     2018-10-10 11:44:00 2018-10-10 12:26:42                        42
V.R                  SPINDLE MOTOR ASSEMBLY AND MOUNTING    Abijith     2018-10-10 11:21:02 2018-10-10 12:26:27                        65
Gnutti Carlo-2[HMC]   ATC MOUNTING ON MACHINE BASE        Anantha Ramu  2018-10-10 00:54:59 2018-10-10 00:55:45                         0
Gnutti Carlo-2[HMC]      SPINDLE MOUNTING                 Anantha Ramu  2018-10-10 00:57:04 2018-10-10 00:58:55    MFD mistake          1
MMF-3[HMC]          APC SUB ASSY MOUNTING ON BASE            Ashok      2018-10-10 09:27:41 2018-10-10 12:04:31    APC UP DOWN         56
MMF-3[HMC]              IT/DDRT MOUNTING ON BASE             Ashok      2018-10-10 13:45:16 2018-10-10 15:13:30                        88
Gnutti Carlo-2[HMC] PILLAR SUB ASSY MOUNTING ON BASE       Balamurali   2018-10-10 09:17:04 2018-10-10 12:21:25                        184
Gnutti Carlo-2[HMC] PILLAR SUB ASSY MOUNTING ON BASE       Balamurali   2018-10-10 12:21:25 2018-10-10 13:18:54    Tea break            57

проблемавсе столбцы categorical ожидаемый тип данных start_datetime & end_datetime в формате datetime, а duration в integer типе данных.

Как эти данные могут быть plotted, показывая всеинформация, которая у него есть ??

Я пытался с seaborn как:

import seaborn as sns
sns.lmplot( x="Operator_name", y="duration", data=df, fit_reg=False, hue='machine_name', legend=True)

, но получил ошибку как:

Categorical is not ordered for operation min

Как я могпостроить и показать информацию этих данных ??

Попробовал ниже код:

sns.catplot(x = 'Operator_name' , y = 'duration', hue ='nick_name' , data = df)

Получил график с перекрытием оси х

x axis overlapping

1 Ответ

0 голосов
/ 24 октября 2018

Вот фиктивный фрейм данных

df = pd.DataFrame({'Operator_name':["Abhishek"]*4 + ['Abijith']*5 + ['Anamtha Ramu']*3,
                  'Duration': np.random.randint(10, 200, size = 12)})
df.head()

    Operator_name   Duration
0   Abhishek         153
1   Abhishek         188
2   Abhishek         51
3   Abhishek         189
4   Abijith          188

Вы можете использовать groupby:

df1 = df.groupby('Operator_name').sum().reset_index()
df1

    Operator_name        Duration
0   Abhishek              299
1   Abijith               458
2   Anamtha Ramu          343

Использовать функцию DataFrame.plot.bar

df1.plot.bar(x = 'Operator_name', y='Duration')

Вы также можете использовать matplotlib:

import matplotlib.pyplot as plt
plt.bar(df['Operator_name'], df['Duration'])

Для Seaborn, попробуйте следующий код:

sns.barplot(x = df['Operator_name'], y = df['Duration'], hue = df['machine_name'])
...