Python 数据处理
1. 导入所需模块或库
导入数据处理pandas
、numpy
及可视化模块matplotlib
、seaborn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
遇到数据文件含有中文内容是,需要执行以下命令,保证输出文字不变成乱码
plt.rcParams["font.sans-serif"]=["SimHei"] #用来正常显示中文标签
plt.rcParams["axes.unicode_minus"]=False #用来正常显示负号
在JupyterNote 中,会出现运行命令执行时报错的情况,但有不影响结果,这时可以使用以下命令,不提示此类warning
import warnings
warnings.filterwarnings('ignore')
为了更好地调用和保存处理的数据源文件,导入os
库,可以定为到数据源文件所在路径
import os
os.chdir('/Users/lin/Documents/Python Hol')
如此便告诉了计算机所在文件的路径os.chdir('文件夹所在地址')
,要用单引号‘ ’
对路径进行描述
2. 导入数据
pd.read_excel()
和pd.read_csv()
df = pd.read_excel('glass fiber content test.xlsx',sheetname=1,header=0)
关键词解释:sheetname
,对应excel表格子表顺序;header
表示选择数据的头名称
Mstat = pd.read_csv('15-16Miscellaneous_Stat.csv')
更详细参数设置操作见pandas的库
3. 数据处理
train_data = pd.read_csv('data/train.csv')
test_data = pd.read_csv('data/test.csv')
sns.set_style('whitegrid')
train_data.head()
sns.set_style('whitegrid')
,可以设置导入数据的初始显示特征
查看数据信息总览
train_data.info()
查看数据长度
print(len(train_data))
从数据信息总览看出,数据存在的几个特征缺失值情况
备注:下一代码与上段无关
代码含义:数据文件df
中,按照Type
进行类型划分并对各类型进行计数.value_counts()
通过了解
df
的主要内容,选择需要继续处理和分析的数据
redf = df[['区域','均价','板块','建筑类型','物业费用','物业公司','开发商','楼栋总数','房屋总数']]
其中使用到了.rename(columns={'key1':'value1','key2':'value2'}
重命名命令,内容是通过字典的形式进行替换的。
data = redf.rename(columns={'区域':'Zone','均价':'Price','板块':'Block','建筑类型':'Style','物业费用':'Fee','物业公司':'Property',
'开发商':'Operator','楼栋总数':'Building','房屋总数':'House'})
data2 = data
输出结果为:
4. 数据清洗
可以发现,重命名后输出的数据结果中,在不同列中均含有如‘暂无’
、‘未知类型’等空缺数据。因此将 ‘暂无’、‘未知类型’、‘暂无信息’、都换成None
data['Property'] = data.Property.replace({'暂无信息':np.nan,'无物业管理服务':np.nan,'无':np.nan})
更有效的方式是通过建立一个filter字典,里面包含需要剔除的信息,在利用正则表达式一一检索去除
filter = {'暂无信息':np.nan,'无物业管理服务':np.nan,'无':np.nan,'无开发商':np.nan,'暂无':np.nan}
data2.Price = data.Price.replace(filter)
data2.Block = data.Block.replace(filter)
data2.Fee = data.Fee.replace(filter)
data2.Property = data.Property.replace(filter)
data2.Operator = data.Operator.replace(filter)
data2 = data2.dropna()
由于导入的数据中,表示为数值显示的内容,暂不清楚其类型。若数字为str
,则无法进行数量运算,因此需要将数字的数型转换
data2['Price'] = data2['Price'].astype(int)
5. 可视化分析
plt.figure(figsize=(12,8))
ax = sns.boxplot(x='Price',y='Zone',data=data2)