1. 程式人生 > 實用技巧 >資料比賽專案資料視覺化模組程式碼大全

資料比賽專案資料視覺化模組程式碼大全

import numpy as np #匯入資料結構nmupy模組
import matplotlib.pyplot as plt #匯入matplotlib影象輸出模組
plt.rcParams["font.sans-serif"]=["SimHei"] #輸出影象的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線裡的負號
import pandas as pd
from pandas.plotting import scatter_matrix
import seaborn as sns
#1-1連續變數之間散點圖輸出
data=pd.read_excel("資料清洗完的最終有效資料1.xlsx")
x=data["點贊數"]
y=data["評論數"]
#data=data[["點贊數","評論數","得分1","得分2","得分3","得分4"]]
#data=data[["點贊數","評論數"]]

#離散特徵與連續變數之間的箱式圖分佈
plt.figure()
x1=["點贊數","評論數"]
for i in range(len(x1)):
plt.subplot(2,1,i+1)
sns.boxplot(data[x1[i]],data["年級"],orient="h")
#plt.title("話題與{}箱式圖分佈".format(x1[i]))
plt.show()

'''

corr=data.corr()
corr=abs(corr)
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)
#plt.xticks(fontsize=15)
#plt.yticks(fontsize=15)
plt.xlabel("資料名稱")
plt.ylabel("資料名稱")
plt.title("點贊數與評論數的相關係數圖")
plt.show()

#離散特徵與連續變數之間的箱式圖分佈
plt.figure()
x1=["得分1","得分2","得分3","得分4"]
for i in range(len(x1)):
plt.subplot(2,2,i+1)
sns.boxplot(data[x1[i]],data["年級"],orient="h",color="black")
#plt.title("話題與{}箱式圖分佈".format(x1[i]))
plt.show()

plt.subplot(2,2,2)
plt.scatter(data["評論數"],data["得分2"]) #畫散點圖的函式scatter(其中XY表示數值的大小,s表示散點的尺寸大小,c表示顏色,alpha表示透明度)
plt.xlabel("評論數")
plt.ylabel("得分2")

plt.subplot(2,2,3)
plt.scatter(data["評論數"],data["得分3"]) #畫散點圖的函式scatter(其中XY表示數值的大小,s表示散點的尺寸大小,c表示顏色,alpha表示透明度)
plt.xlabel("評論數")
plt.ylabel("得分3")

plt.subplot(2,2,4)
plt.scatter(data["評論數"],data["得分4"]) #畫散點圖的函式scatter(其中XY表示數值的大小,s表示散點的尺寸大小,c表示顏色,alpha表示透明度)
plt.xlabel("評論數")
plt.ylabel("得分4")
#plt.title("評論數與各個目標得分之間的分佈散點圖")
plt.show()

corr=data.corr()
corr=abs(corr)
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)
#plt.xticks(fontsize=15)
#plt.yticks(fontsize=15)
plt.xlabel("資料名稱")
plt.ylabel("資料名稱")
plt.title("點贊數評論數與四大目標評分的相關係數圖")
plt.show()
corr=data.corr()
corr=abs(corr)
ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={"size":13,"weight":"bold"},linewidth=0.05)
#plt.xticks(fontsize=15)
#plt.yticks(fontsize=15)
plt.xlabel("資料名稱")
plt.ylabel("資料名稱")
plt.title("點贊數評論數與四大目標評分的相關係數圖")
plt.show()

scatter_matrix(data)
#plt.title("各資料之間散佈矩陣")
plt.show()

#plt.axes([0.025,0.025,0.95,0.95]) #指定顯示範圍
plt.scatter(x,y) #畫散點圖的函式scatter(其中XY表示數值的大小,s表示散點的尺寸大小,c表示顏色,alpha表示透明度)
#plt.xlim(-1.5,1.5),plt.xticks([]) #x和y座標軸的範圍
#plt.ylim(-1.5,1.5),plt.yticks([]) #x和y座標軸的範圍
plt.axis() #顯示所有影象範圍
plt.title("點贊數與評論數散點圖輸出")
plt.xlabel("點贊數")
plt.ylabel("評論數")
plt.show()

fig,ax=plt.subplots(figsize=(12,10))
sns.regplot("點贊數","評論數",data=data,ax=ax)
ax.set_xlabel("點贊數")
ax.set_ylabel("評論數")
fig.tight_layout()

#不同連續變數之間的視覺化展示
cov = np.corrcoef(data.T)
img = plt.matshow(cov,cmap=plt.cm.winter)
plt.colorbar(img, ticks=[-1,0,1])
plt.xticks(np.arange(len(data.keys())), data.keys())
plt.yticks(np.arange(len(data.keys())), data.keys())
#plt.title("各資料之間相關係數分佈圖")
plt.show()


#第一種箱式圖
data[["點贊數","話題"]].boxplot(by="話題")
plt.xlabel("話題種類")
plt.ylabel("點贊數大小")
#plt.title("話題-點贊數箱式圖")
plt.show()

#第二種seaborn繪製箱線圖
import warnings
warnings.filterwarnings("ignore")#不顯示warning
#plt.style.use("ggplot")#美化圖片
#plt.figure(figsize=(15,8))
for i in ["話題","省","學段","年級"]:
sns.boxplot(data["點贊數"],data[i],orient="h")
plt.title("{}與點贊數箱式圖分佈".format(i))
plt.show()

sns.boxplot(data["評論數"],data[i],orient="h")
plt.title("{}與評論數箱式圖分佈".format(i))
plt.show()
'''

#value_counts的函式輸出展示
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
price =data["年級"].value_counts().values
x=len(data["年級"].value_counts())
"""
繪製水平條形圖方法barh
引數一:y軸
引數二:x軸
"""
plt.barh(range(x), price, height=0.8, color='steelblue', alpha=0.9) # 從下往上畫
plt.yticks(range(x),data["年級"].value_counts().index )
plt.ylabel("不同年級")
plt.xlabel("人數分佈")
plt.title("不同區間分佈數量")
for x, y in enumerate(price):
plt.text(y+100, x+0.1, '%s' % y)
plt.show()


import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]#輸出影象的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線裡的負號
name_list = ["評分1","評分2'","評分3", "評分4"]
num_list = [0.912,0.914,0.957,0.851]
num_list1 = [0.976, 0.914,0.916,0.734]

x = list(range(len(num_list)))
total_width, n = 0.6, 3
width = total_width / n
plt.bar(x, num_list, width=width, label="LogisticRegression", fc = "b")

plt.text(x[0],num_list[0],"91.2%",ha='center',va='bottom',fontsize=10)
plt.text(x[1],num_list[1],"91.4%",ha='center',va='bottom',fontsize=10)
plt.text(x[2],num_list[2],"96.7%",ha='center',va='bottom',fontsize=10)
plt.text(x[3],num_list[3],"85.1%",ha='center',va='bottom',fontsize=10)

for i in range(len(x)):
x[i] = x[i] + width
plt.bar(x, num_list1, width=width, label="RandomForest", tick_label = name_list, fc ="r")
plt.xlabel("不同評分目標型別",fontsize=12)
plt.ylabel("不同模型的準確率大小",fontsize=12)
plt.title("不同評分結果的機器學習演算法模型精度表現",fontsize=15)

plt.text(x[0],num_list1[0],"97.6%",ha='center',va='bottom',fontsize=10)
plt.text(x[1],num_list1[1],"91.4%",ha='center',va='bottom',fontsize=10)
plt.text(x[2],num_list1[2],"91.6%",ha='center',va='bottom',fontsize=10)
plt.text(x[3],num_list1[3],"73.4%",ha='center',va='bottom',fontsize=10)

plt.legend(fontsize=9)
plt.show()