pandas包 —— drop()、sort_values()、drop_duplicates()
一、drop() 函数
当你要删除某一行或者某一列时,用drop函数,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据。
1.命令: df.drop()
删除行:df.drop('apps') #drop函数的参数默认 axis=0
删除列:df.dorp('col', axis=1) #删除列要加axis=1,默认是删除行的
2.
temp = deviceid_packages.drop('apps', axis=1)
temp1 = deviceid_packages.drop(['apps'], axis=1)
二、sort_values()函数
pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。
1.sort_values()函数的具体参数
Usage:
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
2.参数说明:
参数 | 说明 |
---|---|
by | 指定列名(axis=0或’index’)或索引值(axis=1或’columns’) |
axis | 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0 |
ascending | 是否按指定列的数组升序排列,默认为True,即升序排列 |
inplace | 是否用排序后的数据集替换原来的数据,默认为False,即不替换 |
na_position | {‘first’,‘last’},设定缺失值的显示位置 |
#注意sort_values()函数与drop()函数的参数axis表示的相反
三、drop_duplicates()函数
参考:https://www.cnblogs.com/xxswkl/p/10989306.html
dataframe删除某一列的重复元素,默认只留下第一次出现的
inplace参数设置为true时直接在原数据上修改,为False时,生成副本.
#注意:所有函数中inplace一旦设置为True,它整体已经就是None.想要再跟函数只能再写一行.
且此时在前面也不能赋值,赋值也是None.因为设置为True时,整体是None,设置为False时,整体是一个引用,可以赋给其它变量.
1.
a1 = pd.DataFrame({ 'a': [1, 1, 3, 2,], 'b': [1, 1, 6, 4,], 'c': [1, 1, 3, 9,] }) print(a1) # a b c # 0 1 1 1 # 1 1 1 1 # 2 3 6 3 # 3 2 4 9 a1.drop_duplicates(inplace=True) print(a1) # a b c # 0 1 1 1 # 2 3 6 3 # 3 2 4 9 # 这里inplace为假,整体实际上是一个引用,所以可以直接输出. print(a1.drop_duplicates(['a','b'], keep='first',inplace=False)) #删除a,b两列重复的行,并且保留首次出现的哪一行 # a b c # 0 1 1 1 # 2 3 6 3 # 3 2 4 9 # 注意这里因为inplace为真,直接在原数据上修改,直接输出是空,因为它并不是一个引用,a1才是引用. print(a1.drop_duplicates(['a','b'], keep='first',inplace=True)) # None
2.
想要留下去掉的重复行,可以先删除重复行后,保存索引,再删除索引.
import pandas as pd import numpy as np import re df = pd.DataFrame({'a': [1,1,3,4,3], 'b': [1,1,3,4,3], 'c': [1,1,3,4,3]}) print('原始数据:\n',df) # 原始数据: # a b c # 0 1 1 1 # 1 1 1 1 # 2 3 3 3 # 3 4 4 4 # 4 3 3 3 print('去掉重复行后:\n', df.drop_duplicates()) # 去掉重复行后: # a b c # 0 1 1 1 # 2 3 3 3 # 3 4 4 4 drop_index = df.drop_duplicates().index.tolist() print('去掉的重复行是:\n',df.drop(drop_index)) # 去掉的重复行是: # a b c # 1 1 1 1 # 4 3 3 3 #参数inplace=默认为假,数据框df还是原来的没有改变 print(df) # a b c # 0 1 1 1 # 1 1 1 1 # 2 3 3 3 # 3 4 4 4 # 4 3 3 3