用python做频数分析_如何用Python制作频率(频数)分布表(图)?
1.數(shù)據(jù)預(yù)處理
導(dǎo)入包
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
導(dǎo)入數(shù)據(jù)(數(shù)據(jù)資源分享鏈接見文末)
data = pd.read_excel(r'數(shù)據(jù).xlsx')
在Console查看導(dǎo)入的數(shù)據(jù)
data
因?yàn)樵璭xcel文件里還有其他信息,所以數(shù)據(jù)需要處理
處理數(shù)據(jù)
在Console查看data的數(shù)據(jù)類型:
type(data)
取Dataframe類型的數(shù)據(jù)的第一列:
data1=data.iloc[:,0]
統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù):
發(fā)現(xiàn)少1個(gè)數(shù)(總共應(yīng)該有50個(gè)數(shù))
原來是第一個(gè)數(shù)4.1被當(dāng)成了DataFrame的索引:
補(bǔ)充缺失的值4.1
先在Console查看data1的數(shù)據(jù)類型
type(data1)
補(bǔ)充Series的缺失值:
n=pd.Series([4.1])
data2=data1.append(n)
2.制作頻數(shù)分布表
將data2分為5個(gè)區(qū)間(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:
......
計(jì)算頻數(shù)
b=a.value_counts()
在Console查看b:
按照b的索引升序排序
b2=b.sort_index()頻數(shù)分布表
3.繪制頻數(shù)分布圖
將Series轉(zhuǎn)換為DataFrame,便于使用Seaborn繪圖:
c={'section':b2.index,'frequency':b2.values}
e=pd.DataFrame(c)
matplotlib字體的默認(rèn)設(shè)置中并沒有中文字體,為避免中文字符亂碼,添加中文字體:
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設(shè)置顏色
設(shè)置y軸刻度范圍:
ax.set_ylim([0, 30])
設(shè)置坐標(biāo)軸文字:
ax.set_xlabel('區(qū)間', fontsize=20)
ax.set_ylabel('頻數(shù)', fontsize=20)
設(shè)置標(biāo)題:
ax.set_title('頻數(shù)分布圖', size=40)
設(shè)置坐標(biāo)軸刻度字體大小:
plt.xticks(fontsize=30)
plt.yticks(fontsize=30)
顯示每個(gè)柱體的值:
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繪制的頻數(shù)分布圖.jpg',dpi=500,bbox_inches = 'tight')
#bbox_inches = 'tight'使保存的圖片顯示完整Python繪制的頻數(shù)分布圖
獲取數(shù)據(jù)和源代碼:
提取碼:n996
總結(jié)
以上是生活随笔為你收集整理的用python做频数分析_如何用Python制作频率(频数)分布表(图)?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021爱分析・区域性银行数字化厂商全景
- 下一篇: 【Python精彩案例】随拍文档转PDF