Удалить категории, имеющие значение 0 в группе панд - PullRequest
0 голосов
/ 29 июня 2018

Я хочу удалить категории с числом 0 после pandas value_counts function ()

Мои данные следующие:

categories: 
Index(['Average', 'Good',  'Poor', ,'VeryGood', 'VeryPoor'],
  dtype='object')

 Output of value counts:

  score     Frequency
   VG        21
   G         15
   A         63
   P         27
   VP        0

Мой результат должен быть как

  score     Frequency
   VG        21
   G         15
   A         63
   P         27

Я хочу сохранить это в кадре данных и построить гистограмму этого. Я не хочу показывать VP на графике, так как его количество равно 0 и, следовательно, исключить эту категорию

Мой код:

          quality_scores=quality.SCORE.value_counts()
          quality_scores=pd.Series.to_frame(quality_scores)
          quality_scores=quality_scores.rename(columns={'SCORE': 
            'Frequency'})
          quality_scores['Score']=quality_scores.index
          quality_scores=quality_scores.reset_index(drop=True)


          quality_scores = quality_scores[quality_scores.Frequency != 0]
          quality_scores

Я редактирую ответ на основании комментариев:

Я получил правильные ответы при печати кадра данных. Однако, когда я проверяю категории с помощью quality_scores ['Score']. Cat.categories, я все равно вижу категорию VP, которая не должна отображаться.

Кроме того, на графике я не ожидаю увидеть категорию VP, но она отображается на оси.

Ниже приведен код для графика:

           plt.figure(figsize=(15,7))

           quality_graph=sns.barplot(y=quality_scores["Frequency"],
           x=quality_scores["Score"])

           quality_graph.set_xlabel('Frequency')

           quality_graph.set_title('Score Distribution of Quality 
           Measure:',fontsize=25)

           plt.savefig('graphs\\Quality_Measure.png')

Если вы видите, на графике много пустых категорий. На самом деле этого нет в кадре данных quality_scores. enter image description here

1 Ответ

0 голосов
/ 30 июня 2018

Помните, что дело имеет значение: «SCORE» и «Score» - это не одно и то же. Вы создали два столбца, один из которых называется «SCORE», а другой - «Score».

Я запустил следующий код, и он работал как положено.

import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
grades = ['VG','G','A','P','VP']
counts = [21,15,63,27,0] 

d = { 'Score' : grades, 'Frequency': counts }
quality_scores = pd.DataFrame(data = d)
quality_scores=quality_scores.reset_index(drop=True)
quality_scores = quality_scores[quality_scores.Frequency != 0]

plt.figure(figsize=(15,7))
quality_graph=sns.barplot(y=quality_scores['Frequency'], x=quality_scores['Score'])
quality_graph.set_xlabel('Frequency')
quality_graph.set_title('Score Distribution of Quality Measure:',fontsize=25)
plt.savefig('Quality_Measure.png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...