f分布表完整图_如何用Python制作频率(频数)分布表(图)?

96b6426a3a74cc4ef0e6828c8fb6a0c1.png

1.数据预处理

导入包

import 

导入数据(数据资源分享链接见文末)

data 

在Console查看导入的数据

data

因为原excel文件里还有其他信息,所以数据需要处理

1b3235c49c7212420cedf5ab9606db71.png

处理数据

在Console查看data的数据类型:

type(data)

abdea22dcc644cbf1ddb11eafa743225.png

取Dataframe类型的数据的第一列:

data1=data.iloc[:,0]

统计数据个数:

c2e0e4d00a916055a73c79efa24c3988.png

发现少1个数(总共应该有50个数)

原来是第一个数4.1被当成了DataFrame的索引:

247812a065519ec428a85416f31f1126.png

补充缺失的值4.1

先在Console查看data1的数据类型

type(data1)

9a230752a3809e4f6b460d82b715331c.png

补充Series的缺失值:

n=pd.Series([4.1])
data2=data1.append(n)

2.制作频数分布表

将data2分为5个区间(0, 3],(3, 6],(6, 9],(9,12],(12,15]:

a=pd.cut(data2,[0,3,6,9,12,15], labels=[u"(0,3]",u"(3,6]",u"(6,9]",u"(9,12]",u"(12,15]"])

在Console查看a:

0354b5040c8e175c36b607ae74c36fe9.png

......

3075749f2fe900b562435e5a588b0c50.png

计算频数

b=a.value_counts()

在Console查看b:

1d546abff16cc8cbefc045a06c80cf95.png

按照b的索引升序排序

b2=b.sort_index()

108e77750ee5ff09d2dc61a3100d6f63.png
频数分布表

3.绘制频数分布图

将Series转换为DataFrame,便于使用Seaborn绘图:

c={'section':b2.index,'frequency':b2.values}
e=pd.DataFrame(c)

matplotlib字体的默认设置中并没有中文字体,为避免中文字符乱码,添加中文字体:

plt.rcParams['font.sans-serif']=['SimHei']

使用Seaborn的barplot绘制条形图:

ax = plt.figure(figsize=(10, 5)).add_subplot(111)
sns.barplot(x="section",y="frequency",data=e,palette="Set3") #palette设置颜色

设置y轴刻度范围:

ax.set_ylim([0, 30])

设置坐标轴文字:

ax.set_xlabel('区间', fontsize=20)
ax.set_ylabel('频数', fontsize=20)

设置标题:

ax.set_title('频数分布图', size=40)

设置坐标轴刻度字体大小:

plt.xticks(fontsize=30)
plt.yticks(fontsize=30)

显示每个柱体的值:

for x, y in zip(range(5), e.frequency):
    ax.text(x, y, '%d'%y, ha='center', va='bottom', fontsize=30, color='grey')

保存图片:

plt.savefig('Python绘制的频数分布图.jpg',dpi=500,bbox_inches = 'tight') 
#bbox_inches = 'tight'使保存的图片显示完整

987d667b0e800ecbaab0a1ac9c290e1b.png
Python绘制的频数分布图

获取数据和源代码:

链接:https://pan.baidu.com/s/17dh7WBCd8KGcuNcwkmZ1Pw

提取码:n996

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作频数分布可以使用R语言中的table()函数,绘制条形可以使用barplot()函数,绘制帕累托可以使用ggplot2包中的geom_point()和geom_line()函数。 下面以一个例子来说明具体操作步骤: 假设有一个数据集,其中包含100个样本,每个样本的取值范围为1到10之间,现在要制作频数分布并绘制条形和帕累托。 首先,我们生成一个包含100个样本的随机数据集: ```R set.seed(123) data <- sample(1:10, 100, replace = TRUE) ``` 然后,我们可以使用table()函数制作频数分布: ```R freq_table <- table(data) ``` 可以使用print()函数查看频数分布: ```R print(freq_table) ``` 输出结果如下: ``` data 1 2 3 4 5 6 7 8 9 10 9 9 7 9 9 8 8 12 10 9 ``` 接下来,我们可以使用barplot()函数绘制条形: ```R barplot(freq_table, main = "Frequency Distribution", xlab = "Value", ylab = "Frequency") ``` 运行以上代码后,会生成一张名为“Frequency Distribution”的条形,并在x轴和y轴上标注相应的值和频数。 最后,我们可以使用ggplot2包中的geom_point()和geom_line()函数绘制帕累托: ```R library(ggplot2) cum_freq <- cumsum(freq_table) percent <- cum_freq/sum(freq_table) * 100 pareto_data <- data.frame(x = names(freq_table), y = percent) ggplot(pareto_data, aes(x = x, y = y)) + geom_point() + geom_line() + ylab("Cumulative Percentage") + ggtitle("Pareto Chart") ``` 运行以上代码后,会生成一张名为“Pareto Chart”的帕累托,并在y轴上标注累积百分比。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值