python太灵活,api太多,还很简洁。能记住一个是一个。那开始吧。
********************************************************************************************
DataFrame.drop_duplicates, 删除DF中,某列或某几列存在相同值的行(可以留重复的第一行,或最后一行,或都不留)
subset中是目标key的list(list中如果有多个key,必须多个key同时满足),取与删除,keep表示留的对象,可以留最后一个,或第一个或都不留
inplace为true表示原DF也跟着改变了
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html
********************************************************************************************
df1 = pd.DataFrame({ 'uid':[2331024, 19851024, 19880610, 2331024], 'values':np.random.randint(10, 12, 4) }) df2 = df1.drop_duplicates(subset=['uid', 'values'], keep='last',
inplace=False) print df1 print df2
#输出 uid values 0 2331024 10 1 19851024 10 2 19880610 10 3 2331024 10 uid values 1 19851024 10 2 19880610 10 3 2331024 10
********************************************************************************************
Series.value_counts, 取Series中相同值的个数Series.nlargest, 取Series中最大的前几行
********************************************************************************************
s = pd.Series(np.random.randint(100, 104, 5)) t1 = s.value_counts(sort=False) t2 = t1.nlargest(2) print t1 print t2
#输出 100 1 101 1 102 1 103 2 dtype: int64 103 2 100 1 dtype: int64
********************************************************************************************
np.intersect1d,取两个list中,交集的部分。第三个参数为True时,保留重复的对象。返回的是一个np的array对象
https://docs.scipy.org/doc/numpy/reference/generated/numpy.intersect1d.html
********************************************************************************************
array = np.intersect1d([3, 2, 9], [1, 3, 4, 3, 5, 8, 3, 2],
assume_unique=True) print array
#输出 [2 3 3 3]
********************************************************************************************
Series.unique, 删除Series中重复的值,返回np的array对象
********************************************************************************************
s = pd.Series(np.random.randint(10, 14, 6)) t1 = s.unique() print s print t1
#输出 0 13 1 13 2 12 3 12 4 11 5 12 dtype: int32 [13 12 11]