“”"
### 3. 处理页数数据
⽬前只要评分是数值型数据,我们还要将⻚数、价格、评论数量转换成数值型数据。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rc(‘font’, **{‘family’:‘SimHei’})
导⼊数据
df = pd.read_excel(‘books.xlsx’)
删除第9列
df = df.drop(‘Unnamed: 9’, axis=1)
对数据做清洗(缺失值与异常值)
df.describe()
df.info()
df.dtypes
print(“---------------------------------”)
前期分析
print( df[‘页数’].describe() )
‘’’
count 60671
unique 2109
top None
freq 4267
Name: 页数, dtype: object
‘’’
print( df[‘页数’].isnull().sum() ) # 返回:0 ,这样看不出来
print( len(df[df[‘页数’]==‘None’]) ) # 返回:4267 , 看看有多少 None 值页数信息
print(“---------------------------------”)
转换
定义 convert_to_int ⽅法处理页数数据,如果为 None 则填充 0
import re
def convert2int(x):
if re.match(‘^\d+$’,str(x)):
return x
else:
return 0
df[‘页数’] = df[‘页数’].apply(convert2int)
‘’’
或者⽤ lambda 表达式
df[‘页数’] = df[‘页数’].apply(lambda x: x if re.match(‘^\d+$’, str(x)) else 0)
df[‘页数’] = df[‘页数’].astype(int)
‘’’
print( df[‘页数’].describe() )
‘’’
count 6.067100e+04
mean 6.883281e+06
std 1.695365e+09
min 0.000000e+00
25% 1.940000e+02
50% 2.640000e+02
75% 3.600000e+02
max 4.175936e+11
Name: 页数, dtype: float64
‘’’
print( df[‘页数’].isnull().sum() ) # 返回:0
print( len(df[df[‘页数’]==‘None’]) ) # 返回:0
### 4.处理价格数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rc(‘font’, **{‘family’:‘SimHei’})
导⼊数据
df = pd.read_excel(‘books.xlsx’)
删除第9列
df = df.drop(‘Unnamed: 9’, axis=1)
对数据做清洗(缺失值与异常值)
df.describe()
df.info()
df.dtypes
print(“---------------------------------”)
处理价格数据
df[