Pandas用法总结

二、数据处理

2.1、数据清洗
定义:数据清洗就是处理缺失数据以及消除无意义的信息,如删除原始数据集中的无关数据、重复数据,平滑噪声数据,筛选掉与分析主题无关的数据,处理缺失值、异常值等。
1. 重复值处理

duplicated(subset=None, keep='first')				标记重复数据
drop_duplicates(subset=None, keep='first', inplace=false)				删除重复数据

subset:用于识别重复的列标签或列标签序列,默认所有列标签;
keep='first':表示除了第一次出现外,其余相同的数据被标记为重复;
keep='last':表示除了最后一次出现外,其余相同的数据被标记为重复;
keep='False':表示所有相同的数据都被标记为重复
inplace:是否在源数据上修改;inplace=True在源数据中修改没有返回值,inplace=False修改数据返回一个新对象

例:
>>> df
   age   name
0   20   alex
1   17  power
2   20   alex
3   18   alex
4   19  harry
>>> df.duplicated()
0    False
1    False
2     True
3    False
4    False
dtype: bool
>>> df.duplicated(subset='name')
0    False
1    False
2     True
3     True
4    False
dtype: bool
>>> df.drop_duplicates(subset='name')
   age   name
0   20   alex
1   17  power
4   19  harry
>>> df
   age   name
0   20   alex
1   17  power
2   20   alex
3   18   alex
4   19  harry
>>> df.drop_duplicates(subset='name', inplace=True)
>>> df
   age   name
0   20   alex
1   17  power
4   19  harry
>>> 

2、缺失值处理

df.isnull()和df.notnull():判断缺失情况
df.dropna():删除值为空的数据行
df.fillna():用其他数值替代NaN
df.fillna(method='pad'):用前一个数据值替代缺失值
df.fillna(method='bfill'):用后一个数据值替代缺失值
df.fillna(df.mean()):用平均数替代缺失值
df.fillna(df.mean()[填补列名:计算均值的列名]):指定其他列的平均值替代缺失值
df.fillna({列名1:值1, 列名2:值2}):对不同的列填充不同的值
NaN用来表示浮点和非浮点数组中的缺失数据

2.2、数据抽取
1、字段抽取

slice(start, stop):抽出某列上指定位置的数据做成新的列

例:
>>> df
     event_no
0  2019123456
1  2019123456
2  2019123456
3  2019123456
4  2019123456
>>> df['event_no'].str.slice(0,4)
0    2019
1    2019
2    2019
3    2019
4    2019
Name: event_no, dtype: object

2、字段拆分

split(sep, n, expand=False)
sep:表示用于分隔字符串的分割符;
n:表示分割后新增的列数;
expand:表示是否展开为数据框,默认为False

例:
>>> df
              IP
0  192.200.122.2
1  192.200.122.3
2  192.200.122.4
3  192.200.122.5
4  192.200.122.6
>>> df['IP'].str.split('.',3)
0    [192, 200, 122, 2]
1    [192, 200, 122, 3]
2    [192, 200, 122, 4]
3    [192, 200, 122, 5]
4    [192, 200, 122, 6]
Name: IP, dtype: object
>>> df['IP'].str.split('.',3,True)
     0    1    2  3
0  192  200  122  2
1  192  200  122  3
2  192  200  122  4
3  192  200  122  5
4  192  200  122  6

3、重置索引

df.set_index(列名):指定列为索引

例:
>>> df
   age   name
0   20   alex
1   17  power
2   20   alex
3   18   alex
4   19  harry
>>> df.set_index('name')
       age
name      
alex    20
power   17
alex    20
alex    18
harry   19

4、记录抽取

df[condition]:根据条件对数据进行抽取,返回DataFrame对象
condition:表示过滤条件

常用的condition类型:
 - 比较运算符:==、<、>、<=、>=、!=;例:df[df.comments > 10000];
 - 范围运算符:between(left, right);例:df[df.comments.between(1000, 10000)];
 - 空值运算:pandas.isnull();例:df[df.title.isnull()];
 - 字符串匹配:str.contains(pattan,na=False);例:df[df.title.str.contains('电台', na=False)];
 - 逻辑运算符:&(与)、|(或)、not(取反);例:df[(df.comments>=1000)&(df.comments<=10000)];

5、随机抽样

numpy.random.randint(start, end, num)

start:表示范围的开始值
end:表示范围的结束值
num:表示抽样的个数
返回值:行的索引值序列

例:
>>> df
   age   name
0   20   alex
1   17  power
2   20   alex
3   18   alex
4   19  harry
>>> r = numpy.random.randint(0,4,1)
>>> df.loc[r]
   age  name
3   18  alex

你可能感兴趣的:(pandas,python)