绘制累积分布图-R语言

在处理亿级量的数据时,为了客观划分人群特征,需要根据数据分布绘制累积分布图。本文通过R语言展示了如何在面对一千万条数据时,观察分布变化并定义特征点,而未进行复杂的拟合曲线和求导操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有一个需求,要求根据数据分布情况,根据分布曲线寻找切点来进行人群特征划分,用数据来反应实际情况,而不是主观划分节点。
这次需要处理的数据量为亿级量,处理之后关键绘图数据条数为一千万条左右,这次并没有拟合分布曲线,求导,找到斜率变动最大的几个点,仅通过分布图,定义了几个坡度变动明显的几个点。

数据格式截图

这里写图片描述

R代码

price_data<-read.csv("E://house//estate.csv",header=F,encoding="UTF-8",quote="")#读取数据
colnames(price_data)<-c("card","year","loc","total_price")#给列赋予名称
pdata<-table(price_data$total_price)#按价格列统计频次
pframe<-data.frame(as.numeric(names(pdata)),as.numeric(pdata))#将table类型数据转化为数据框格式
colnames(pframe)<-c("price","num")#给统计后的数据命名
rankData<-pframe[order(pframe[,1],decreasing=F),]#按价格升序排列
####计算价格频数累积值####
mulData<-data.frame()
sum=0
for(i in 1:nrow(rankData)){
    sum=sum+rankData[i,2]
    row=cbind(rankData$price[i],sum)#拼接
    mulData=rbind(mulData,row)
}#此步耗时良久,数据量决定
colnames(mulData)<-c("price","num")
finalData<-mulData[which(mulData$price>100000),]#筛选满足条件的数据
plot(finalData$price,finalData$num/sum,xaxt="n",yaxt="n",main="价格分布图",xlab="价格",ylab="累计比例")
axis(side=2,seq(from=0,to=1,by=0.1),)#设置y轴
axis(side=1,seq(from=500000,to=10000000,by=400000),)#设置x轴
grid(nx=25,ny=25)#添加方格
text(600000,0.4,"grade1",col=gray(0:10/50),cex=1)
text(900000,0.6,"grade2",col=gray(0:20/50),cex=1)
text(2000000,0.9,"grade3",col=gray(0:30/50),cex=1)
text(10000000,1,"grade4",col=gray(0:40/50),cex=1)

绘制累积分布图

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值