Pandas常用技能概括
df = pd.DataFrame({'a':[1,2,3,4], 'b':['s1', 'exp_s2', 's3','exps4'], 'c':[5,6,7,8], 'd':[3,2,5,10]}) df[df['b'].str.contains('exp')] 5.组内排序 df = pd.DataFrame([['A',1],['A',3],['A',2],['B',5],['B',9]], columns = ['name','score']) df 介绍两种高效地组内排序的方法。 df.sort_values(['name','score'], ascending = [True,False])
df.groupby('name').apply(lambda x: x.sort_values('score', ascending=False)).reset_index(drop=True) 6.选择特定类型的列 drinks = pd.read_csv('data/drinks.csv') # 选择所有数值型的列 drinks.select_dtypes(include=['number']).head() # 选择所有字符型的列 drinks.select_dtypes(include=['object']).head() drinks.select_dtypes(include=['number','object','category','datetime']).head() # 用 exclude 关键字排除指定的数据类型 drinks.select_dtypes(exclude=['number']).head() 7.字符串转换为数值 df = pd.DataFrame({'列1':['1.1','2.2','3.3'], '列2':['4.4','5.5','6.6'], '列3':['7.7','8.8','-']}) df
df.astype({'列1':'float','列2':'float'}).dtypes 用这种方式转换第三列会出错,因为这列里包含一个代表 0 的下划线,pandas 无法自动判断这个下划线。 为了解决这个问题,可以使用 to_numeric() 函数来处理第三列,让 pandas 把任意无效输入转为 NaN。 df = df.apply(pd.to_numeric, errors='coerce').fillna(0) df 8.优化 DataFrame 对内存的占用 方法一:只读取切实所需的列,使用usecols参数 cols = ['beer_servings','continent'] small_drinks = pd.read_csv('data/drinks.csv', usecols=cols) 方法二:把包含类别型数据的 object 列转换为 Category 数据类型,通过指定 dtype 参数实现。 dtypes ={'continent':'category'} smaller_drinks = pd.read_csv('data/drinks.csv',usecols=cols, dtype=dtypes) 9.根据最大的类别筛选 DataFrame movies = pd.read_csv('data/imdb_1000.csv') counts = movies.genre.value_counts() movies[movies.genre.isin(counts.nlargest(3).index)].head() (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |