2017-05-22 5 views
5

में मैं Sklearn stratified sampling docs के साथ-साथ pandas docs और भी Stratified samples from Pandas और sklearn stratified sampling based on a column देखा है लेकिन वे इस मुद्दे के समाधान नहीं है।स्तरीकृत नमूनाकरण पांडा

मैं एक डेटासेट से आकार एन के स्तरीकृत नमूने उत्पन्न करने के लिए एक तेज पांडा/sklearn/numpy रास्ता की तलाश में हूँ। हालांकि, निर्दिष्ट नमूना संख्या से कम पंक्तियों के लिए, यह सभी प्रविष्टियों को लेना चाहिए।

कंक्रीट उदाहरण:

enter image description here

धन्यवाद! :)

उत्तर

13

नमूना संख्या को पार करते समय min का उपयोग करें। डेटाफ्रेम df

df = pd.DataFrame(dict(
     A=[1, 1, 1, 2, 2, 2, 2, 3, 4, 4], 
     B=range(10) 
    )) 

df.groupby('A', group_keys=False).apply(lambda x: x.sample(min(len(x), 2))) 

    A B 
1 1 1 
2 1 2 
3 2 3 
6 2 6 
7 3 7 
9 4 9 
8 4 8 
+0

एक प्रतिभा समाधान है, धन्यवाद! :) – Wboy

+0

@Wboy मुझे खुशी है कि आपको यह पसंद है। – piRSquared