চ্যালেঞ্জ এসও প্রশ্নের জবাব দেওয়ার অন্যতম চ্যালেঞ্জপূর্ণ বিষয় হ'ল সমস্যাটি পুনরায় তৈরি করতে সময় লাগে (ডেটা সহ)। যে প্রশ্নগুলিতে ডেটা পুনরুত্পাদন করার সুস্পষ্ট উপায় নেই তাদের উত্তর দেওয়ার সম্ভাবনা কম। আপনি কোনও প্রশ্ন লেখার জন্য সময় নিচ্ছেন এবং আপনার একটি সমস্যা রয়েছে যার সাথে আপনি সহায়তা চান তা প্রদত্ত, আপনি সহজেই এমন ডেটা সরবরাহ করে নিজেকে সহায়তা করতে পারেন যা অন্যরা তখন আপনার সমস্যা সমাধানে সহায়তা করতে পারে।
ভাল পান্ডাস প্রশ্ন লেখার জন্য @ অ্যান্ডির দেওয়া নির্দেশাবলী শুরু করার জন্য একটি দুর্দান্ত জায়গা। আরও তথ্যের জন্য, কীভাবে জিজ্ঞাসা করতে হবে এবং কীভাবে ন্যূনতম, সম্পূর্ণ এবং যাচাইযোগ্য উদাহরণগুলি তৈরি করবেন তা দেখুন ।
আপনার প্রশ্নটি স্পষ্টভাবে উল্লেখ করুন। আপনার প্রশ্ন এবং যে কোনও নমুনা কোড লেখার জন্য সময় দেওয়ার পরে, এটি পড়ার চেষ্টা করুন এবং আপনার পাঠকের জন্য একটি 'এক্সিকিউটিভ সংক্ষিপ্তসার' সরবরাহ করুন যা সমস্যার সংক্ষিপ্তসার করে এবং পরিষ্কারভাবে প্রশ্নের উত্তর দেয়।
মূল প্রশ্ন :
আমার এই ডেটা আছে ...
আমি এটা করতে চাই...
আমি চাই আমার ফলাফলটি এরকম দেখতে ...
তবে, যখন আমি [এটি] করার চেষ্টা করি তখন আমি নিম্নলিখিত সমস্যাটি পাই ...
আমি [এটি] এবং [যে] করে সমাধানগুলি সন্ধান করার চেষ্টা করেছি।
আমি কীভাবে এটি ঠিক করব?
ডেটা, নমুনা কোড এবং ত্রুটিযুক্ত স্ট্যাকের পরিমাণের উপর নির্ভর করে সমস্যাটি কী তা বোঝার আগে পাঠককে অনেকদূর যেতে হবে। আপনার প্রশ্নটি পুনরায় চেষ্টা করুন যাতে প্রশ্নটি নিজেই শীর্ষে থাকে এবং তারপরে প্রয়োজনীয় বিশদ সরবরাহ করে।
সংশোধিত প্রশ্ন :
প্রশ্ন: আমি কীভাবে এটি করতে পারি?
আমি [এটি] এবং [যে] করে সমাধানগুলি সন্ধান করার চেষ্টা করেছি।
আমি যখন [এটি করার চেষ্টা করেছি) তখন আমি নিম্নলিখিত সমস্যাটি পাই ...
আমি আমার চূড়ান্ত ফলাফল দেখতে চাই ...
এখানে কিছু ন্যূনতম কোড যা আমার সমস্যার পুনঃ উত্পাদন করতে পারে ...
এবং এখানে কীভাবে আমার নমুনা ডেটা পুনরায় তৈরি করবেন:
df = pd.DataFrame({'A': [...], 'B': [...], ...})
প্রয়োজনে নমুনা ডেটা সরবরাহ করুন !!!
কখনও কখনও ডেটাফ্রেমের কেবল মাথা বা লেজই যা প্রয়োজন তা হয়। আপনি @ জন দ্বারা প্রস্তাবিত পদ্ধতিগুলি আরও বড় ডেটাসেটগুলি তৈরি করতে ব্যবহার করতে পারেন যা অন্যরা পুনরুত্পাদন করতে পারে। তার উদাহরণটি ব্যবহার করে শেয়ারের দামের 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)
দ্রষ্টব্য: যদি আপনার ডেটাফ্রেমে কোনও মাল্টিআইডেক্স থাকে:
যদি আপনার ডেটাফ্রেমের কোনও মাল্টিইন্ডেক্স থাকে তবে আপনাকে কল করার আগে প্রথমে পুনরায় সেট করতে হবে 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