मैं पंडों read_clipboard का उपयोग करके स्टैक ओवरफ्लो प्रश्नों पर प्रभावी रूप से डेटा कैसे लोड कर सकता हूं?
मुझे लगता है कि स्टैक ओवरफ्लो पर बहुत सारे पांडा प्रश्न हैं, केवल पाठ के रूप में उनके डेटा की कुछ पंक्तियों को शामिल करने के लिए, इसे उत्पन्न / पुन: उत्पन्न करने के लिए कोड के साथ। मैं इसके अस्तित्व से अवगत हूं, read_clipboardलेकिन यह पता लगाने में असमर्थ हूं कि कई स्थितियों में डेटा पढ़ने के लिए इस फ़ंक्शन को प्रभावी ढंग से कैसे कॉल करें, जैसे कि हेडर नामों में सफेद स्थान, या स्तंभों में पायथन ऑब्जेक्ट्स जैसे सूची में सफेद स्थान हैं।
pd.read_clipboard
अपरंपरागत स्वरूपों में चिपके डेटा को पढ़ने के लिए मैं और अधिक प्रभावी ढंग से कैसे उपयोग कर सकता हूं जो डिफ़ॉल्ट तर्क का उपयोग करके आसान पढ़ने के लिए खुद को उधार नहीं देता है? क्या ऐसी स्थितियाँ हैं जहाँ read_clipboard
कम आती हैं?
जवाब
read_clipboard: शुरुआती मार्गदर्शक
read_clipboardवास्तव में पांडा टैग में सवालों के जवाब देने के लिए किसी को भी बचाने की कृपा है । दुर्भाग्य से, पांडा के दिग्गजों को यह भी पता है कि प्रश्नों में दिए गए डेटा को हमेशा पोस्ट किए गए डेटा के प्रारूप में विभिन्न जटिलताओं के कारण टर्मिनल में ग्रॉस करना आसान नहीं होता है।
शुक्र है, read_clipboard
ऐसे तर्क हैं जो इन मामलों में से अधिकांश को संभालना संभव (और आसान) बनाते हैं। यहां कुछ सामान्य उपयोग के मामले और उनके संगत तर्क दिए गए हैं।
सामान्य उपयोग के मामले
read_clipboard
read_csv
व्हॉट्सएप विभाजक के साथ हुड के तहत उपयोग करता है , इसलिए CSV से डेटा पार्स करने के लिए बहुत सारी तकनीकें यहां लागू होती हैं, जैसे कि
डेटा में रिक्त स्थान के साथ पार्सिंग कॉलम
sep
रेगेक्स तर्क के साथ उपयोग करें । सबसे पहले, यह सुनिश्चित करें कि कॉलम के डेटा के भीतर और स्तंभों के बीच कम से कम दो रिक्त स्थान हैं और कॉलम के डेटा के अंदर ही हैं। तब आप उपयोग कर सकते हैंsep=r'\s{2,}'
जिसका अर्थ है "विभाजक के लिए कम से कम दो लगातार व्हाट्सएप की तलाश में अलग कॉलम" (ध्यान दें:engine='python'
मल्टीचेर या रेगेक्स विभाजकों के लिए आवश्यक है):df = pd.read_clipboard(..., sep=r'\s{2,}', engine='python')
यह भी देखें कि pd.read_clipboard का उपयोग करते समय आप उन स्थानों के स्तंभ नामों को कैसे संभालते हैं? ।
DataFrame के बजाय एक श्रृंखला पढ़ना
उपयोग
squeeze=true
, आप की संभावना भी आवश्यकता होगीheader=None
, तो पहली पंक्ति भी डेटा है।s = pd.read_clipboard(..., header=None, squeeze=True)
यह भी देखें कि एक श्रृंखला को पढ़ने के लिए पांडा पढ़ने के लिए उपयोग करने का एक आसान तरीका हो सकता है? ।
कस्टम हेडर नामों के साथ डेटा लोड करना
names=[...]
के साथ संयोजन में उपयोग करेंheader=None
औरskiprows=[0]
मौजूदा हेडर को अनदेखा करें।df = pd.read_clipboard(..., header=None, names=['a', 'b', 'c'], skiprows=[0])
बिना किसी हेडर के डेटा लोड करना
- उपयोग
header=None
- उपयोग
इंडेक्स के रूप में एक या अधिक कॉलम सेट करें
index_col=[...]
उपयुक्त लेबल या इंडेक्स के साथ उपयोग करें
पार्सिंग डेट्स
parse_dates
उपयुक्त प्रारूप के साथ उपयोग करें । यदि पार्सिंगdatetimes
(यानी, टाइमस्टैम्प द्वारा अलग की गई तारीख वाले कॉलम), तो आपको यहsep=r'\s{2,}'
सुनिश्चित करने की भी आवश्यकता होगी कि आपके कॉलम को कम से कम दो स्थानों से अलग किया जाए।
अन्य मामलों के लिए तर्कों पर एक अधिक व्यापक सूची के लिए मेरे द्वारा इस उत्तर को देखें read_csv
यहां कवर नहीं किया गया है ...
चेतावनियां
read_clipboard
एक सेना-सेना चाकू है। हालांकि यह
सुंदर / सारणीबद्ध स्वरूपों में डेटा नहीं पढ़ सकते हैं (IOW, बॉर्डर्स इसे कठिन बनाते हैं)
- Pd.read_clipboard का उपयोग करके एक सुंदर-मुद्रित / स्वरूपित डेटाफ़्रेम में पढ़ना देखें ? इससे निपटने के समाधान के लिए।
जब तक सूचकांक में सभी तत्व निर्दिष्ट नहीं किए जाते हैं तब तक MultIndexes को सही ढंग से पार्स नहीं कर सकता।
- Pd.read_clipboard के साथ MultiIndex डेटाफ़ॉर्म कॉपी करना देखें ? इससे निपटने के समाधान के लिए।
डेटा में ईलिप्स को अनदेखा / संभाल नहीं सकते
- मेरी सुझाई गई विधि है कि मुद्रण से पहले मैन्युअल रूप से दीर्घवृत्त निकालें
स्ट्रिंग के अलावा कुछ भी सूचियों (या अन्य वस्तुओं) के स्तंभों को पार्स नहीं किया जा सकता है। कॉलम को अलग से रूपांतरित करने की आवश्यकता होगी, जैसा कि दिखाया गया है कि आप pd.read_clipboard का उपयोग करके सूचियों के साथ डेटाफ़्रेम में कैसे पढ़ते हैं? ।
छवियों से पाठ नहीं पढ़ सकते हैं (इसलिए कृपया अपने डेटा को लोगों के साथ साझा करने के लिए छवियों का उपयोग न करें, कृपया!)
इस फंक की एक कमजोरी यह है कि CTRL + C
अगर यह कॉपी किसी PDF
फाइल से की जाती है तो यह कंटेंट को कैप्चर नहीं करता है । इस तरह से परीक्षण करने से परिणाम एक खाली पढ़ा जाता है।
लेकिन एक नियमित पाठ संपादक का उपयोग करके, यह ठीक है। यहाँ बेतरतीब ढंग से लिखे गए पाठ का उपयोग करके एक उदाहरण दिया गया है:
>>> pd.read_clipboard()
Empty DataFrame
Columns: [sfsesfsdsxcvfsdf]
Index: []