चुनौती एसओ सवालों के जवाब देने के सबसे चुनौतीपूर्ण पहलुओं में से एक है समस्या को दोबारा बनाने में लगने वाला समय (डेटा सहित)। जिन प्रश्नों में डेटा को पुन: पेश करने का स्पष्ट तरीका नहीं है, उनके उत्तर दिए जाने की संभावना कम होती है। यह देखते हुए कि आप एक प्रश्न लिखने के लिए समय ले रहे हैं और आपके पास एक ऐसा मुद्दा है, जिसकी आप मदद करना चाहते हैं, आप आसानी से खुद को डेटा प्रदान करके मदद कर सकते हैं जो कि अन्य लोग तब आपकी समस्या को हल करने में मदद कर सकते हैं।
अच्छे पंडों के प्रश्न लिखने के लिए @Andy द्वारा दिए गए निर्देश एक उत्कृष्ट स्थान है। अधिक जानकारी के लिए, कैसे पूछें और कैसे कम से कम, पूर्ण और सत्यापन योग्य उदाहरण बनाएं ।
कृपया अपने प्रश्न को स्पष्ट रूप से बताएं। अपने प्रश्न और किसी भी नमूना कोड को लिखने के लिए समय निकालने के बाद, इसे पढ़ने की कोशिश करें और अपने पाठक के लिए एक 'कार्यकारी सारांश' प्रदान करें जो समस्या का सारांश देता है और स्पष्ट रूप से प्रश्न बताता है।
मूल प्रश्न :
मेरे पास यह डेटा है ...
मैं यह करना चाहता हूँ...
मैं चाहता हूं कि मेरा परिणाम इस तरह दिखे ...
हालाँकि, जब मैं [यह] करने की कोशिश करता हूं, तो मुझे निम्नलिखित समस्या आती है ...
मैंने [यह] और [कि] करके समाधान खोजने की कोशिश की है।
मैं इसे कैसे ठीक करूं?
प्रदान किए गए डेटा, नमूना कोड और त्रुटि ढेर की मात्रा के आधार पर, पाठक को यह समझने से पहले एक लंबा रास्ता तय करना होगा कि समस्या क्या है। अपने प्रश्न को पुनर्स्थापित करने का प्रयास करें ताकि प्रश्न स्वयं शीर्ष पर हो, और फिर आवश्यक विवरण प्रदान करें।
संशोधित प्रश्न :
दहन: मैं [यह] कैसे कर सकता हूं?
मैंने [यह] और [कि] करके समाधान खोजने की कोशिश की है।
जब मैंने [यह] करने की कोशिश की है, तो मुझे निम्नलिखित समस्या है ...
मैं अपने अंतिम परिणाम इस तरह देखना चाहता हूँ ...
यहाँ कुछ न्यूनतम कोड है जो मेरी समस्या को पुन: उत्पन्न कर सकते हैं ...
और यहाँ मेरा नमूना डेटा फिर से बनाने का तरीका है:
df = pd.DataFrame({'A': [...], 'B': [...], ...})
प्रस्तावित नमूना डेटा की जरूरत है !!!
कभी-कभी DataFrame का सिर्फ सिर या पूंछ ही वह सब है जिसकी जरूरत होती है। आप बड़े डेटासेट बनाने के लिए @JohnE द्वारा प्रस्तावित विधियों का भी उपयोग कर सकते हैं जिन्हें दूसरों द्वारा पुन: प्रस्तुत किया जा सकता है। स्टॉक की कीमतों की 100 पंक्ति डेटाफ़्रेम उत्पन्न करने के लिए उनके उदाहरण का उपयोग करना:
stocks = pd.DataFrame({
'ticker':np.repeat( ['aapl','goog','yhoo','msft'], 25 ),
'date':np.tile( pd.date_range('1/1/2011', periods=25, freq='D'), 4 ),
'price':(np.random.randn(100).cumsum() + 10) })
यदि यह आपका वास्तविक डेटा था, तो आप डेटाफ़्रेम के सिर और / या पूंछ को इस प्रकार शामिल करना चाह सकते हैं (किसी भी संवेदनशील डेटा को अज्ञात करना सुनिश्चित करें):
>>> stocks.head(5).to_dict()
{'date': {0: Timestamp('2011-01-01 00:00:00'),
1: Timestamp('2011-01-01 00:00:00'),
2: Timestamp('2011-01-01 00:00:00'),
3: Timestamp('2011-01-01 00:00:00'),
4: Timestamp('2011-01-02 00:00:00')},
'price': {0: 10.284260107718254,
1: 11.930300761831457,
2: 10.93741046217319,
3: 10.884574289565609,
4: 11.78005850418319},
'ticker': {0: 'aapl', 1: 'aapl', 2: 'aapl', 3: 'aapl', 4: 'aapl'}}
>>> pd.concat([stocks.head(), stocks.tail()], ignore_index=True).to_dict()
{'date': {0: Timestamp('2011-01-01 00:00:00'),
1: Timestamp('2011-01-01 00:00:00'),
2: Timestamp('2011-01-01 00:00:00'),
3: Timestamp('2011-01-01 00:00:00'),
4: Timestamp('2011-01-02 00:00:00'),
5: Timestamp('2011-01-24 00:00:00'),
6: Timestamp('2011-01-25 00:00:00'),
7: Timestamp('2011-01-25 00:00:00'),
8: Timestamp('2011-01-25 00:00:00'),
9: Timestamp('2011-01-25 00:00:00')},
'price': {0: 10.284260107718254,
1: 11.930300761831457,
2: 10.93741046217319,
3: 10.884574289565609,
4: 11.78005850418319,
5: 10.017209045035006,
6: 10.57090128181566,
7: 11.442792747870204,
8: 11.592953372130493,
9: 12.864146419530938},
'ticker': {0: 'aapl',
1: 'aapl',
2: 'aapl',
3: 'aapl',
4: 'aapl',
5: 'msft',
6: 'msft',
7: 'msft',
8: 'msft',
9: 'msft'}}
आप डेटाफ़्रेम (केवल प्रासंगिक कॉलम का उपयोग करके) का विवरण भी प्रदान करना चाह सकते हैं। इससे प्रत्येक कॉलम के डेटा प्रकारों की जांच करना और अन्य सामान्य त्रुटियों की पहचान करना आसान हो जाता है (जैसे कि स्ट्रिंग बनाम डेटाटाइम 64 बनाम ऑब्जेक्ट):
stocks.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 100 entries, 0 to 99
Data columns (total 3 columns):
date 100 non-null datetime64[ns]
price 100 non-null float64
ticker 100 non-null object
dtypes: datetime64[ns](1), float64(1), object(1)
नोट: यदि आपके DataFrame में MultiIndex है:
यदि आपके DataFrame में मल्टीएंडेक्स है, तो आपको कॉल करने से पहले रीसेट करना होगा to_dict। फिर आपको सूचकांक का उपयोग करके फिर से बनाना होगा set_index:
# MultiIndex example. First create a MultiIndex DataFrame.
df = stocks.set_index(['date', 'ticker'])
>>> df
price
date ticker
2011-01-01 aapl 10.284260
aapl 11.930301
aapl 10.937410
aapl 10.884574
2011-01-02 aapl 11.780059
...
# After resetting the index and passing the DataFrame to `to_dict`, make sure to use
# `set_index` to restore the original MultiIndex. This DataFrame can then be restored.
d = df.reset_index().to_dict()
df_new = pd.DataFrame(d).set_index(['date', 'ticker'])
>>> df_new.head()
price
date ticker
2011-01-01 aapl 10.284260
aapl 11.930301
aapl 10.937410
aapl 10.884574
2011-01-02 aapl 11.780059