Excel 处理技巧 (二)

数据清洗

1、重复值处理**

(在多分数据合并出现重复 or 文件中对重复的数据只计算一次可用)

duplicated(self,subset=None,keep='first')

# keep='first'    表示除了第一次出现外,其余相同的数据都标记为重复
# keep='last'    表示除了最后一次出现外,其余相同的数据都标记为重复
# keep=False     表示所有相同的数据都被标记为重复值
# drop_duplicated()    则表示删除重复值

2、缺失值处理**

(1) df.dropna() 去除数据有空所对应的行
428eb6b7176e4b62b359fcb2ca270350_.png

测试数据,通过“读取Excel”组件直接读出,返回如上图:
会发现索引为2,这行有一个空值,输出时,空值,默认以“Nan”显示

经过一下代码处理后:

df = pd.read_excel(io='//mac/Home/Desktop/test/test.xlsx')
df1 = df.dropna()
print(df1)

得到的结果为:
a618ffb8882241c9bdbefe5e2e94d21b_.png

会发现索引为2的行,已经不存在了。

(2) df.fillna() 用其他数值替代缺失值

a、df.fillna(method='pad')   用前一个数据值替代Nan
b、df.fillna(method='bfill')   用后一个数据值替代Nan
c、df.fillna(df.mean())   用平均数或者其他描述性统计量来代替Nan
d、df.fillna(df.mean()['填补列名':'计算均值的列名'])   使用选择列的均值进行缺失值的处理
e、df.fillna({'列名1':"值1",'列名2',"值2"})     可以传入一个字典,对不同的列进行填充

同样适用上面的测试数据,对 a 点。
经过以下代码后:

df = pd.read_excel(io='//mac/Home/Desktop/test/test.xlsx')
df1 = df.fillna(method='pad')
print(df1)

得到的如下:
758700001a7b459d959deb0b7d7c682d_.png

会发现,之前索引为2,这行英语的值取得是索引1,同列的数据。(剩下属性不做演示)

3、 df.strip()

清除字符串数据左右指定的字符** 默认空格(中间不清除)
通过测试数据,我们读取姓名一列,得到下图
1e292c67f7314c5fa8c1e1d621a2b80a_.png

经过以下代码:

df = pd.read_excel(io='//mac/Home/Desktop/test/test.xlsx')
df1 = df['姓名'].str.strip('J')
print(df1)

得到如下图:
ba4d263d09ed4944a54556db14013a20_.png
代码中,我们将姓名这一列,去除字段中首尾的“J”。(日常流程中,可能去除空字符串要较多一点,一般在多分不同来源的数据汇总的时候会出现这种问题)。

当然,该函数,还有两种写法,分别是:

a、df[列名].str.rstrip(去除的字符)          # 去除尾部
b、df[列名].str.lstrip(去除的字符)          # 去除首部

注意:

此方法只针对字符串格式,若列如测试数据中“学号”一列,使用此代码,会报错 :

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

解决方案,参照下贴
https://support.i-search.com.cn/article/1572492073622

发布了29 篇原创文章 · 获赞 3 · 访问量 318
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览