栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Pandas进行数据处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Pandas进行数据处理

1. 准备工作
首先导入所需要的pandas,numpy,matplotlib,设置jupyter显示绘图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

2. 读取数据
创建空列表,遍历循环,将csv文件依次读取并存入列表中,得到一个包含数据框的列表datalist

datalist = []
for i in range(1,3):
    try:
        data = pd.read_csv('lianjia{}.csv'.format(i),encoding = 'gbk')
    except:
        data = pd.read_csv('lianjia{}.csv'.format(i),encoding = 'utf-8')
    datalist.append(data)

将列表中所有数据框合并为一个数据框

data = pd.concat(datalist)

查看描述统计和字段格式信息

data.describe()
data.info()


查看数据框前5行

data.head()


3. 提取研究字段
将需要研究的字段提取出来

data = data[['cjdanjia','cjxiaoqu','cjlouceng','bankuai']]

查看提取后的前5行

data.head()


4. 缺失值判断、处理
通过逻辑值求和,检查数据框中是否有缺失值

(data.isnull()).sum()#查看是否有缺失值

查看有缺失值的具体行

data[data.cjdanjia.isnull()]#查看成交单价缺失的行

删除含有缺失值的行,加入how = ‘all’,删除一行全为空的行

data.dropna(inplace = True)#删除字段全为空的行how = 'all',

5. 重复值判断、处理
查看是否含有重复行,若逻辑值的和为n,则有n条重复行

(data.duplicated()).sum()#查看是否有重复值

查看是否有除bankuai外的三个字段重复的行

(data.duplicated(subset = ['cjdanjia','cjxiaoqu','cjlouceng'])).sum()

查看重复值

data[data.duplicated()]


将数据集按照板块排序,要先排序之后再删除重复值,这是因为如果不按照板块排序的话,删除的重复值可能板块不为空,会丢失信息

data.sort_values(by = 'bankuai',inplace = True)

删除重复值,查看排序并删重之后的数据是什么样子的

data.drop_duplicates(subset = ['cjdanjia','cjxiaoqu','cjlouceng'],inplace = True)
data.head()


6. 数据类型转换
查看不包含元/平的行数

(data.cjdanjia.str.contains('元/平') == False).sum()

将成交单价列的字符去掉’元/平’,转为float,以万为单位,保留两位小数点

data = data.assign(cjdanjia = np.round(data.cjdanjia.str.replace('元/平','').astype(np.float32).map(lambda x:x/10000),2))

7. 剔除异常值
查看成交单价字段中的最小值

data.cjdanjia.min()

剔除成交单价小于0.5万的数据

data = data[data.cjdanjia > 0.5]

8. 数据离散化分析
对数据进行分组,进行离散化分析,绘制出区间分布条形图,将横坐标旋转20度显示。从条形图可以看出,3-5万的成交单价数量最多,10万以上的成交单价非常少。

bins = [0,1,3,5,7,10,15]
pd.cut(data.cjdanjia,bins).value_counts().plot.bar(rot = 20)


9. 字符串处理
检验成交楼层字段,是否都是由三个部分组成,由/分隔

(data.cjlouceng.str.split('/').map(len) != 3).sum()

将朝向、楼层提取出来存为单独一列字段

data = data.assign(chaoxiang = data.cjlouceng.map(lambda x:x.split('/')[0]))
data = data.assign(louceng = data.cjlouceng.map(lambda x:x.split('/')[1]))

返回列唯一值

data.louceng.unique()

将楼层列的字符串转为数值型

data = data.join(pd.get_dummies(data.louceng))
data.head()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号