美文网首页
2018-10-31

2018-10-31

作者: 夏日的蒲公英 | 来源:发表于2018-10-31 13:55 被阅读4次

    Python 数据处理

    1. 导入所需模块或库

    导入数据处理pandasnumpy及可视化模块matplotlibseaborn

    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()

    image.png
    通过了解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)
    

    相关文章

      网友评论

          本文标题:2018-10-31

          本文链接:https://www.haomeiwen.com/subject/ohhatqtx.html