python - एक पांडस डेटाफ्रेम में समूहित डेटा से हिस्टोग्राम प्लॉट करना




pandas histogram (2)

आपका फ़ंक्शन विफल हो रहा है क्योंकि आपके द्वारा समाप्त किए गए .hist() में एक पदानुक्रमित सूचकांक और दो कॉलम (पत्र और एन) हैं, इसलिए जब आप करते हैं। .hist() यह दोनों स्तंभों का हिस्टोग्राम बनाने की कोशिश कर रहा है इसलिए स्ट्र त्रुटि।

यह पांडा प्लॉटिंग फ़ंक्शंस (कॉलम प्रति एक प्लॉट) का डिफ़ॉल्ट व्यवहार है, इसलिए यदि आप अपने डेटा फ्रेम को दोबारा बदलते हैं ताकि प्रत्येक अक्षर एक कॉलम हो, आपको वही मिल जाएगा जो आप चाहते हैं।

df.reset_index().pivot('index','Letter','N').hist()

reset_index() इंडेक्स नामक कॉलम में वर्तमान इंडेक्स को reset_index() लिए है। फिर pivot आपके डेटा फ्रेम ले जाएगा, प्रत्येक Letter लिए सभी मान N एकत्रित करें और उन्हें एक कॉलम बनाएं। परिणामी डेटा फ्रेम 400 पंक्तियों के रूप में ( NaN साथ गुम मूल्यों को भरता है) और तीन कॉलम ( A, B, C )। hist() फिर प्रति स्तंभ एक हिस्टोग्राम का उत्पादन करेगा और आप आवश्यकतानुसार प्लॉट प्रारूपित करेंगे।

मुझे पांडा डेटाफ्रेम में समूहीकृत डेटा से हिस्टोग्राम के ब्लॉक को साजिश करने के तरीके में काम करने में कुछ मार्गदर्शन चाहिए। मेरे प्रश्न को स्पष्ट करने के लिए यहां एक उदाहरण दिया गया है:

from pandas import DataFrame
import numpy as np
x = ['A']*300 + ['B']*400 + ['C']*300
y = np.random.randn(1000)
df = DataFrame({'Letter':x, 'N':y})
grouped = df.groupby('Letter')

मेरी अज्ञानता में मैंने इस कोड कमांड की कोशिश की:

df.groupby('Letter').hist()

जो त्रुटि संदेश के साथ विफल रहा "TypeError: 'str' और 'float' ऑब्जेक्ट्स को संयोजित नहीं कर सकता"

किसी भी मदद की सराहना की।


एक समाधान प्रत्येक समूहबद्ध डेटा फ्रेम पर सीधे matplotlib हिस्टोग्राम का उपयोग करना है। आप लूप में प्राप्त समूहों के माध्यम से पाश कर सकते हैं। प्रत्येक समूह एक डेटा फ्रेम है। और आप प्रत्येक के लिए हिस्टोग्राम बना सकते हैं।

from pandas import DataFrame
import numpy as np
x = ['A']*300 + ['B']*400 + ['C']*300
y = np.random.randn(1000)
df = DataFrame({'Letter':x, 'N':y})
grouped = df.groupby('Letter')

for group in grouped:
  figure()
  matplotlib.pyplot.hist(group[1].N)
  show()




histogram