तो। हमारे पास गन्दा डेटा है जो एक टीएसवी फ़ाइल में संग्रहीत डेटा है जिसे मुझे विश्लेषण करने की आवश्यकता है। यह वह जगह है कि यह कैसेपायथन। पांडा। बड़ा डाटा। गन्दा टीएसवी फ़ाइल। डेटा को कैसे घुमाएं?
status=200 protocol=http region_name=Podolsk datetime=2016-03-10 15:51:58 user_ip=0.120.81.243 user_agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 user_id=7885299833141807155 user_vhost=tindex.ru method=GET page=/search/
लग रहा है और समस्या यह है कि पंक्तियों में से कुछ अलग कॉलम आदेश है/उनमें से कुछ मान गुम और मुझे लगता है कि उच्च प्रदर्शन के साथ से छुटकारा पाने की जरूरत है (डेटासेट के बाद से मैं काम कर रहा हूँ 100 गीगाबाइट तक हैं)।
Data = pd.read_table('data/data.tsv', sep='\t+',header=None,names=['status', 'protocol',\
'region_name', 'datetime',\
'user_ip', 'user_agent',\
'user_id', 'user_vhost',\
'method', 'page'], engine='python')
Clean_Data = (Data.dropna()).reset_index(drop=True)
अब मैं याद आ रही मूल्यों से छुटकारा मिला लेकिन एक समस्या अभी भी बनी हुई है! यह कैसे डेटा लग रहा है:
और यह कैसे समस्या दिखाई देता है:
आप देख सकते हैं कॉलम की कुछ भरपाई कर रहे हैं। मैं एक बहुत कम प्रदर्शन समाधान
ids = Clean_Data.index.tolist()
for column in Clean_Data.columns:
for row, i in zip(Clean_Data[column], ids):
if np.logical_not(str(column) in row):
Clean_Data.drop([i], inplace=True)
ids.remove(i)
तो अब डेटा अच्छा लग रहा है ... कम से कम मैं इसके साथ काम कर सकते हैं बनाया! लेकिन ऊपर दी गई विधि के लिए उच्च प्रदर्शन वैकल्पिक क्या है? unutbu कोड पर
अद्यतन: ट्रेसबैक त्रुटि
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-52c9d76f9744> in <module>()
8 df.index.names = ['index', 'num']
9
---> 10 df = df.set_index('field', append=True)
11 df.index = df.index.droplevel(level='num')
12 df = df['value'].unstack(level=1)
/Users/Peter/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in set_index(self, keys, drop, append, inplace, verify_integrity)
2805 if isinstance(self.index, MultiIndex):
2806 for i in range(self.index.nlevels):
-> 2807 arrays.append(self.index.get_level_values(i))
2808 else:
2809 arrays.append(self.index)
/Users/Peter/anaconda/lib/python2.7/site-packages/pandas/indexes/multi.pyc in get_level_values(self, level)
664 values = _simple_new(filled, self.names[num],
665 freq=getattr(unique, 'freq', None),
--> 666 tz=getattr(unique, 'tz', None))
667 return values
668
/Users/Peter/anaconda/lib/python2.7/site-packages/pandas/indexes/range.pyc in _simple_new(cls, start, stop, step, name, dtype, **kwargs)
124 return RangeIndex(start, stop, step, name=name, **kwargs)
125 except TypeError:
--> 126 return Index(start, stop, step, name=name, **kwargs)
127
128 result._start = start
/Users/Peter/anaconda/lib/python2.7/site-packages/pandas/indexes/base.pyc in __new__(cls, data, dtype, copy, name, fastpath, tupleize_cols, **kwargs)
212 if issubclass(data.dtype.type, np.integer):
213 from .numeric import Int64Index
--> 214 return Int64Index(data, copy=copy, dtype=dtype, name=name)
215 elif issubclass(data.dtype.type, np.floating):
216 from .numeric import Float64Index
/Users/Peter/anaconda/lib/python2.7/site-packages/pandas/indexes/numeric.pyc in __new__(cls, data, dtype, copy, name, fastpath, **kwargs)
105 # with a platform int
106 if (dtype is None or
--> 107 not issubclass(np.dtype(dtype).type, np.integer)):
108 dtype = np.int64
109
TypeError: data type "index" not understood
पांडा संस्करण: 0.18.0-np110py27_0
अद्यतन
सब कुछ काम किया ... धन्यवाद हर कोई!
क्या आप कृपया अपना कोड टिप्पणी कर सकते हैं ताकि मैं (और हर कोई) पूरी तरह से आपका अनुसरण कर सके? एचएम ऐसा लगता है कि iPython उस कोड के साथ वास्तव में धीमा काम करता है। असल में यह 'डीएफ = डीएफ [' सब '] पर अटक गया। Str.extract (' \ t'.join (['(। *)'] * (एन + 1)), विस्तार = सही) 'पंक्ति .. । कोई विचार? –
मैंने कोड बदल दिया है (इसलिए यह अब उस लाइन का उपयोग नहीं करता है) और खंडों में एक टीएसवी फ़ाइल को पढ़ने के तरीके पर एक अनुभाग जोड़ा गया। यदि चंक्साइज बहुत बड़ा नहीं है तो आपको परिणाम अधिक तेज़ी से देखने में सक्षम होना चाहिए। इसके अलावा, शायद आपको एक विशाल डेटाफ्रेम बनाने की आवश्यकता नहीं है; शायद आप टीएसवी को क्रमशः हिस्सों में संसाधित कर सकते हैं। – unutbu
'df = df.set_index ('field', append = True) 'फेंकता है' टाइपरर: डेटा प्रकार" अनुक्रमणिका "समझा नहीं गया है ... आप मेरी [डेटा फ़ाइल (केवल 30 एमबी)] (https: // drive.google.com/open?id=0BxWmwAIo1D_nUUpqTU5TdDlaUHc) ... वास्तव में मुझे कोई संकेत नहीं है क्यों। लगता है कि एक पांडा बग –