पांडा और matplotlib के साथ श्रेणीबद्ध डेटा को प्लॉट करना


94

मेरे पास श्रेणीबद्ध डेटा के साथ एक डेटा फ़्रेम है:

     colour  direction
1    red     up
2    blue    up
3    green   down
4    red     left
5    red     right
6    yellow  down
7    blue    down

मैं कुछ ग्राफ उत्पन्न करना चाहता हूं, जैसे श्रेणियों के आधार पर पाई चार्ट और हिस्टोग्राम। क्या डमी न्यूमेरिक वैरिएबल बनाए बिना यह संभव है? कुछ इस तरह

df.plot(kind='hist')

जवाबों:


181

आप बस value_countsश्रृंखला पर उपयोग कर सकते हैं :

df['colour'].value_counts().plot(kind='bar')

यहाँ छवि विवरण दर्ज करें


1
df["colour"].value_counts().plot(kind='bar')आम विकल्प के रूप में सुझाव देते हुए
20

2
क्या एक्स लेबल के आदेश को निर्दिष्ट करना संभव है?
पी। कैमिलेरी

3
हां, आप एक्स-लेबल्स के आदेश को स्पष्ट रूप से निर्दिष्ट कर सकते हैं, जैसेdf['colour'].value_counts()[['green', 'yellow', 'blue', 'red']]
अलेक्जेंडर

क्या आप मुझे बता सकते हैं कि मैं इस भूखंड में समायोजन कैसे कर सकता हूं। मेरा मतलब है कि अगर मैं हर वर्ग के लिए रंग बदलना चाहता हूं या मैं इसमें एक किंवदंती जोड़ना चाहता हूं।
इब्तिहाज ताहिर

24

आपको mosaicसांख्यिकीमॉडल से उपयोगी प्लॉट मिल सकता है । जो विभेदकों के लिए सांख्यिकीय हाइलाइटिंग भी दे सकता है।

from statsmodels.graphics.mosaicplot import mosaic
plt.rcParams['font.size'] = 16.0
mosaic(df, ['direction', 'colour']);

यहाँ छवि विवरण दर्ज करें

लेकिन 0 आकार के सेल से सावधान रहें - वे लेबल के साथ समस्याओं का कारण बनेंगे।

देखें इस उत्तर जानकारी के लिए


धन्यवाद। मुझे मान प्राप्त हो रहा है: इस पर एनए को पूर्णांक में परिवर्तित नहीं कर सकता।
इवान

1
इसलिए मैंने इस जवाब का हवाला दिया । इस समस्या को दूर करने में मदद करनी चाहिए।
प्राइमर


11

countplotसे भी उपयोग कर सकते हैं seaborn। यह पैकेज pandasउच्च स्तरीय प्लॉटिंग इंटरफ़ेस बनाने के लिए बनाता है। यह आपको अच्छी स्टाइल और सही एक्सिस लेबल मुफ्त में देता है।

import pandas as pd
import seaborn as sns
sns.set()

df = pd.DataFrame({'colour': ['red', 'blue', 'green', 'red', 'red', 'yellow', 'blue'],
                   'direction': ['up', 'up', 'down', 'left', 'right', 'down', 'down']})
sns.countplot(df['colour'], color='gray')

यहाँ छवि विवरण दर्ज करें

यह थोड़ी सी चाल के साथ सलाखों को सही रंग में रंगने का भी समर्थन करता है

sns.countplot(df['colour'],
              palette={color: color for color in df['colour'].unique()})

यहाँ छवि विवरण दर्ज करें


10

एक ही भूखंड पर बार चार्ट के रूप में कई स्पष्ट विशेषताओं को प्लॉट करने के लिए, मैं सुझाव दूंगा:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {
        "colour": ["red", "blue", "green", "red", "red", "yellow", "blue"],
        "direction": ["up", "up", "down", "left", "right", "down", "down"],
    }
)

categorical_features = ["colour", "direction"]
fig, ax = plt.subplots(1, len(categorical_features))
for i, categorical_feature in enumerate(df[categorical_features]):
    df[categorical_feature].value_counts().plot("bar", ax=ax[i]).set_title(categorical_feature)
fig.show()

यहाँ छवि विवरण दर्ज करें


1
यह एक महान स्ट्रोक प्रभाव है!
सिप्रियन टोमोयाग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.