pandas
डुप्लिकेट डेटा
खोज…
डुप्लिकेट का चयन करें
अगर जरूरत निर्धारित मूल्य 0
स्तंभ के लिए B
, जहां कॉलम में A
डेटा पहले से मुखौटा बनाने दोहराया गया है Series.duplicated
और उसके बाद का उपयोग DataFrame.ix
या Series.mask
:
In [224]: df = pd.DataFrame({'A':[1,2,3,3,2],
...: 'B':[1,7,3,0,8]})
In [225]: mask = df.A.duplicated(keep=False)
In [226]: mask
Out[226]:
0 False
1 True
2 True
3 True
4 True
Name: A, dtype: bool
In [227]: df.ix[mask, 'B'] = 0
In [228]: df['C'] = df.A.mask(mask, 0)
In [229]: df
Out[229]:
A B C
0 1 1 1
1 2 0 0
2 3 0 0
3 3 0 0
4 2 0 0
अगर जरूरत की विपरीत मुखौटा उपयोग ~
:
In [230]: df['C'] = df.A.mask(~mask, 0)
In [231]: df
Out[231]:
A B C
0 1 1 0
1 2 0 2
2 3 0 3
3 3 0 3
4 2 0 2
ड्रॉप डुप्लिकेट
drop_duplicates
उपयोग करें:
In [216]: df = pd.DataFrame({'A':[1,2,3,3,2],
...: 'B':[1,7,3,0,8]})
In [217]: df
Out[217]:
A B
0 1 1
1 2 7
2 3 3
3 3 0
4 2 8
# keep only the last value
In [218]: df.drop_duplicates(subset=['A'], keep='last')
Out[218]:
A B
0 1 1
3 3 0
4 2 8
# keep only the first value, default value
In [219]: df.drop_duplicates(subset=['A'], keep='first')
Out[219]:
A B
0 1 1
1 2 7
2 3 3
# drop all duplicated values
In [220]: df.drop_duplicates(subset=['A'], keep=False)
Out[220]:
A B
0 1 1
जब आप डेटा फ़्रेम की एक प्रति प्राप्त नहीं करना चाहते, लेकिन मौजूदा को संशोधित करने के लिए:
In [221]: df = pd.DataFrame({'A':[1,2,3,3,2],
...: 'B':[1,7,3,0,8]})
In [222]: df.drop_duplicates(subset=['A'], inplace=True)
In [223]: df
Out[223]:
A B
0 1 1
1 2 7
2 3 3
अद्वितीय तत्वों को गिनना और प्राप्त करना
एक श्रृंखला में अद्वितीय तत्वों की संख्या:
In [1]: id_numbers = pd.Series([111, 112, 112, 114, 115, 118, 114, 118, 112])
In [2]: id_numbers.nunique()
Out[2]: 5
एक श्रृंखला में अद्वितीय तत्व प्राप्त करें:
In [3]: id_numbers.unique()
Out[3]: array([111, 112, 114, 115, 118], dtype=int64)
In [4]: df = pd.DataFrame({'Group': list('ABAABABAAB'),
'ID': [1, 1, 2, 3, 3, 2, 1, 2, 1, 3]})
In [5]: df
Out[5]:
Group ID
0 A 1
1 B 1
2 A 2
3 A 3
4 B 3
5 A 2
6 B 1
7 A 2
8 A 1
9 B 3
प्रत्येक समूह में अद्वितीय तत्वों की संख्या:
In [6]: df.groupby('Group')['ID'].nunique()
Out[6]:
Group
A 3
B 2
Name: ID, dtype: int64
प्रत्येक समूह में अद्वितीय तत्व मिलते हैं:
In [7]: df.groupby('Group')['ID'].unique()
Out[7]:
Group
A [1, 2, 3]
B [1, 3]
Name: ID, dtype: object
एक कॉलम से अद्वितीय मान प्राप्त करें।
In [15]: df = pd.DataFrame({"A":[1,1,2,3,1,1],"B":[5,4,3,4,6,7]})
In [21]: df
Out[21]:
A B
0 1 5
1 1 4
2 2 3
3 3 4
4 1 6
5 1 7
स्तंभ A और B में अनन्य मान प्राप्त करने के लिए
In [22]: df["A"].unique()
Out[22]: array([1, 2, 3])
In [23]: df["B"].unique()
Out[23]: array([5, 4, 3, 6, 7])
एक सूची के रूप में कॉलम ए में अद्वितीय मान प्राप्त करने के लिए (ध्यान दें कि unique()
का उपयोग दो अलग-अलग तरीकों से किया जा सकता है)
In [24]: pd.unique(df['A']).tolist()
Out[24]: [1, 2, 3]
यहाँ एक और अधिक जटिल उदाहरण है। कहें कि हम स्तंभ 'बी' से अद्वितीय मूल्यों को खोजना चाहते हैं जहां 'ए' 1 के बराबर है।
सबसे पहले, एक डुप्लिकेट पेश करें ताकि आप देख सकें कि यह कैसे काम करता है। आइए 6 को पंक्ति '4' में बदलें, कॉलम 'बी' को 4 के साथ:
In [24]: df.loc['4', 'B'] = 4
Out[24]:
A B
0 1 5
1 1 4
2 2 3
3 3 4
4 1 4
5 1 7
अब डेटा का चयन करें:
In [25]: pd.unique(df[df['A'] == 1 ]['B']).tolist()
Out[25]: [5, 4, 7]
यह पहले DataFrame की सोच से टूट सकता है:
df['A'] == 1
यह कॉलम ए में मान पाता है जो 1 के बराबर हैं, और उन पर सही या गलत लागू होता है। इसके बाद हम DataFrame (बाहरी DataFrame चयन) के कॉलम 'B' से मानों का चयन करने के लिए इसका उपयोग कर सकते हैं
तुलना के लिए, यहां सूची दी गई है यदि हम अद्वितीय का उपयोग नहीं करते हैं। यह कॉलम 'B' में प्रत्येक मान को पुनः प्राप्त करता है जहां कॉलम 'A' 1 है
In [26]: df[df['A'] == 1]['B'].tolist()
Out[26]: [5, 4, 4, 7]