【无标题】

1、检查缺失值的方法
df.isnull().sum()
df.info()

2、缺失值的处理方法
df.dropna(axis=0, how=‘any’,thresh=None,subset=None,inplace=False)

axis:行还是列

how:所有都是nan才删掉,还是有一个就删掉

#thresh = 2:有两个nan的行删掉
#subset = [‘1’,‘2’]:在 1 ,2列中寻找
df.fillna(value=None,method=None,axis=None,inplace=False,limit=None, downcast=None)

value:填的值

method = ffill/bfill:用前一个填,还是用后一个填

limit:填几条记录

3、查看重复值
df.duplicated(subset=None, keep=‘first’/‘last’/False)

subset:要检查的列

keep:first默认值,除了第一次出现外,其余相同的被标记为重复;last:除了最后一次出现外,其余相同的被标记为重复;False:即所有相同的都被标记为重复;

df[df.duplicated()]

4、删除重复值
df.drop_duplicates(subset=None, keep=‘first’, inplace=False)

5、分箱处理
pd.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=‘raise’)

x:要分箱的列,必须是一维

bins:被切割后的区间,有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex。

right:bool型参数,默认为True,表示是否包含区间右部。

labels:给分割后的bins打标签

e.g:
df[‘AgeBand’] = pd.cut(df[‘Age’], 5,labels = [1,2,3,4,5])
df[‘AgeBand’] = pd.cut(df[‘Age’],[0,5,15,30,50,80],labels = [1,2,3,4,5])

pd.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=‘raise’)

e.g:
df[‘AgeBand’] = pd.qcut(df[‘Age’],[0,0.1,0.3,0.5,0.7,0.9],labels = [1,2,3,4,5])

6、查看类别文本变量名及种类

方法一:

df[‘Sex’].value_counts()

male 453
female 261
0 1
Name: Sex, dtype: int64

方法二:

df[‘Sex’].unique()

array([‘male’, ‘female’, 0], dtype=object)

df[‘Sex’].nunique()

3

7、将文本替换成数字等级

.replace()

df.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method=‘pad’)

e.g:
df[‘Sex_num’] = df[‘Sex’].replace([‘male’,‘female’],[1,2])

.map

Series.map(arg, na_action=None)
#arg:函数, 字典或系列。它指的是映射对应关系。
#na_action:{无, ‘忽略’}, 默认值无。如果忽略, 它将返回空值, 而不将其传递给映射对应关系。

e.g:
df[‘Sex_num’] = df[‘Sex’].map({‘male’: 1, ‘female’: 2})

8、将文本转换成one-hot编码
pd.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False)

新生成一个显示one-hot的dataframe

data : array-like, Series, or DataFrame 输入的数据

prefix :默认None,get_dummies转换后,列名的前缀

columns : default None,指定需要实现类别转换的列名

dummy_na : bool, default False,增加一列表示空缺值,如果False就忽略空缺值

drop_first : bool, default False,获得k中的k-1个类别值,去除第一个。

e.g:
df[feat] = pd.get_dummies(df[feat], prefix=feat)

9、提取特征
Series.str.extract(pat, flags=0, expand=True)

pat:str 具有捕获组的正则表达式模式。

flags:int, 默认为 0 (no flags),来自的标志re模块,例如re.IGNORECASE,用于修改大小写,空格等内容的正则表达式匹配。有关更多详细信息,请参见re。

expand:bool, 默认为 True,如果为True,则返回每个捕获组只有一列的DataFrame。如果为False,则在有一个捕获组的情况下返回 Series /索引,在有多个捕获组的情况下返回DataFrame。

expand = True,返回dataframe, = False,返回series.

10、表的连接(concat, join, merge)
pd.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False)

objs: series,dataframe或者是panel构成的序列lsit

axis: 需要合并链接的轴,0是行,1是列

join:连接的方式 inner,或者outer

https://www.jb51.net/article/164905.htm

pd.join(other, on=None, how=“left”, lsuffix="", rsuffix="", sort=False)

on:用来对齐的列名,一定要保证左表和右表存在相同的列名

how:数据融合的方法,方式(inner、outer、left、right)默认是left

e.g:
resul_up = text_left_up.join(text_right_up)
result_down = text_left_down.join(text_right_down)
result = result_up.append(result_down)

pd.merge(left, right, how=“inner”, on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False,suffixes=("_x", “_y”),
copy=True, indicator=False,validate=None):

left_on左表对齐的列,可以是列名。也可以是DataFrame同长度的arrays

right_on右表对齐的列,可以是列名。

left_index将左表的index用作连接键

right_index将右表的index用作连接键

how:默认是inner

https://www.yht7.com/news/94812

11、dataframe转成series
df.stack(level=- 1, dropna=True)

结果是Series

12、分组和聚合
group by 和 agg

df_agg = df.groupby(‘Country’).agg([‘min’, ‘mean’, ‘max’])

text.groupby(‘Sex’).agg({‘Fare’: ‘mean’, ‘Pclass’: ‘count’}).rename(columns=
{‘Fare’: ‘mean_fare’, ‘Pclass’: ‘count_pclass’})

注意:分组之后仍然是一个表,还可以进行text[‘fare’]操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值