पर पांडा get_dummies से खुला सीमा संकेतक एक अंकीय उम्र पांडा स्तंभ, के रूप में वृद्ध qcut साथ discretize से, हम qcut सीमा से खुला सीमा बनाने ([यू '[5, 30]', यू '(30, 70]'], dtype = 'वस्तु') हम bopens बनाने:बनाएं discretized संख्यात्मक
>>> bopens = get_open_bounds(df)
>>> bopens
# ['(-inf, 5]', '(-inf, 30]', '(-inf, 70]', '(5, +inf)', '(30, +inf)', '(70, +inf)']
फिर हम डमी में स्पष्ट चर परिवर्तित/सूचक get_dummies साथ चर:
df = pd.get_dummies(df)
print df
# age ageD_[5, 30] ageD_(30, 70]
# 0 5 1 0
# 1 23 1 0
# 2 43 0 1
# 3 70 0 1
# 4 30 1 0
मैं खुले सीमा स्तंभों के साथ डेटा फ्रेम को बेहतर बनाने के लिए चाहते हैं, df.shape काफी बड़ा, ~ (10E6, 32) हो जाएगा। प्रत्येक पंक्ति 6 बोपेन कोल्स बनाने के लिए सबसे अच्छा तरीका क्या है?
>>> df
age age_[5, 30] age_(30, 70] (-inf, 5] (-inf, 30] (-inf, 70] (5, +inf) (30, +inf) (70, +inf)
0 5 1 0 1 1 1 0 0 0
1 23 1 0 0 1 1 1 0 0
2 43 0 1 0 0 1 1 1 0
3 70 0 1 0 0 1 1 1 0
4 30 1 0 0 1 1 1 0 0
पुनश्च::
लक्ष्य df की तरह इस एक दिखेगा
def get_open_bounds(df):
bounds = [(int(x[1:]), int(y[:-1])) for x, y in
[c.split(', ') for c in df.ageD.cat.categories]]
bounds = list(chain(*bounds))
bounds
# [5, 30, 30, 70]
# to get uniques, keeping the order
bounds = [b for idx, b in enumerate(bounds) if b not in bounds[:idx]]
# make the open bounds
bopens = ["(-inf, {}]".format(b) for b in bounds] + \
["({}, +inf)".format(b) for b in bounds]
return bopens
फ्रेम कन्स्ट्रक्टर को df.index पास करने का क्या मतलब है? – user3313834
@ user3313834: डेटाफ्रेम कई डेटा लेता है, जिसमें 'डेटा' (यह क्या भरा जा रहा है),' कॉलम '(कॉलम के नाम) और' अनुक्रमणिका 'सहित कई तर्क लेते हैं। मैंने 'इंडेक्स' पास नहीं किया है, इसलिए 'dl' और' dr' सूचकांक 0,1,2,3 प्राप्त करें .. यदि आपके 'डीएफ' के पास 0,1,2,3 .. आदि नहीं है, तो concatenation अप्रत्याशित परिणाम देगा क्योंकि सूचकांक मेल नहीं खाते। – DSM