為了解決特定問題而進行的學習是提高效率的最佳途徑。這種方法能夠使我們專注于最相關的知識和技能,從而更快地掌握解決問題所需的能力。 (以下練習題來源于《統(tǒng)計學—基于Python》。請在Q群455547227下載原始數據。)
練習題為了研究不同地區(qū)的消費者對網上購物的滿意度,隨機抽取東部、中部和西部的1000名消費者進行調查,得到的結果如下表所示。繪制以下圖形。(1)根據東部地區(qū)的滿意度數據,繪制簡單條形圖、帕累托圖和餅圖。 (2)根據東部地區(qū)、中部地區(qū)和西部地區(qū)的滿意度數據,繪制并列條形圖、推疊條形圖和環(huán)形圖。
Python代碼與繪圖(1)根據東部地區(qū)的滿意度數據,繪制簡單條形圖、帕累托圖和餅圖。# (1)根據東部地區(qū)的滿意度數據,繪制簡單條形圖、帕累托圖和餅圖 import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Heiti TC'] plt.rcParams['axes.unicode_minus'] = False df = pd.read_csv('exercise3_1.csv') plt.subplots(1, 3, figsize = (20, 5)) # 設置子圖和圖形大小 # 圖(a)東部地區(qū)滿意度的簡單條形圖 plt.subplot(131) plt.barh(y = df['滿意度'], width = df['東部'], alpha = 0.6) # 繪制水平條形圖 plt.xlabel('消費者人數', size = 12) plt.ylabel('滿意度', size = 12) plt.title('(a)東部地區(qū)滿意度的條形圖', size = 15) plt.xlim(0, 150) # 設置x軸的范圍 # 圖(b)東部地區(qū)滿意度的帕累托圖 # 處理數據 df_p = df.sort_values(by = '東部', ascending = False) # 按東部地區(qū)消費者人數降序排序數據框 p = 100*df_p['東部'].cumsum()/df_p['東部'].sum() # 計算累計百分比 df_p['累計百分比'] = p # 繪制直方圖 ax = plt.subplot(132) ax.bar(df_p['滿意度'], df_p['東部'], color = 'steelblue') # 繪制條形圖 ax.set_ylabel('消費者人數', size = 12) # 設置y軸標簽 ax.set_xlabel('滿意度', size = 12) # 設置x軸標簽 # 繪制帕累托曲線 ax2 = ax.twinx() # 與條形圖共享坐標軸 ax2.plot(df_p['滿意度'], df_p['累計百分比'], color = 'C1', marker = 'D', ms = 7) # 繪制折線圖 ax2.set_ylabel('累計百分比(%)', size = 12) # 設置y軸標簽 plt.title('(b)東部地區(qū)滿意度的帕累托圖', size = 15) # 圖(c)東部地區(qū)滿意度的3D餅圖 plt.subplot(133) p1 = plt.pie(df['東部'], labels = df['滿意度'], autopct = '%1.2f%%', shadow = True, # 繪制立體帶陰影的餅圖 explode = (0.11, 0, 0, 0, 0)) # 設置某一塊與中心的距離 plt.title('(c)東部地區(qū)滿意度的3D餅圖', size = 15)
 (2)根據東部地區(qū)、中部地區(qū)和西部地區(qū)的滿意度數據,繪制并列條形圖、推疊條形圖和環(huán)形圖。 #(2)根據東部地區(qū)、中部地區(qū)和西部地區(qū)的滿意度數據,繪制并列條形圖、推疊條形圖和環(huán)形圖 import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Heiti TC'] plt.rcParams['axes.unicode_minus'] = False df = pd.read_csv('exercise3_1.csv') plt.subplots(1, 3, figsize = (20, 5)) # 設置子圖和圖形大小 # 圖(a)并列條形圖 ax1 = plt.subplot(131) # 設置子圖1 df.plot(kind = 'bar', stacked = False, width = 0.8, ax = ax1) # 繪制并列條形圖 plt.xlabel('滿意度', size = 12) plt.ylabel('消費者人數', size = 12) plt.xticks(range(5), df['滿意度'], rotation = 0) # 添加x軸標簽并設置旋轉角度 plt.title('(a)并列條形圖', fontsize = 13, color = 'black') # 圖(b)堆疊條形圖 ax2 = plt.subplot(132) # 設置子圖2 df.plot(kind = 'bar', stacked = True, width = 0.5, ax = ax2) # 繪制堆疊條形圖 plt.xlabel('滿意度', size = 12) plt.ylabel('消費者人數', size = 12) plt.xticks(range(5), df['滿意度'], rotation = 0) # 添加x軸標簽并設置旋轉角度 plt.title('(b)堆疊條形圖', fontsize = 13, color = 'black') # 圖(c)多樣本嵌套環(huán)形圖 plt.subplot(133) # 設置子圖3 colors = ['red', 'yellow', 'slateblue', 'lawngreen', 'magenta', 'green', 'orange', 'cyan', 'pink', 'gold'] # 設置顏色向量 p1 = plt.pie(df['東部'], labels = df['滿意度'], autopct = '%1.2f%%', radius = 1, pctdistance = 0.9, # 半徑為1,標簽距圓心距離為0.9 colors = colors, wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w')) p2 = plt.pie(df['西部'], autopct = '%1.2f%%', radius = 0.75, pctdistance = 0.85, # 半徑為0.75,標簽距圓心距離為0.85 colors = colors, wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w')) p3 = plt.pie(df['中部'], autopct = '%1.2f%%', radius = 0.5, pctdistance = 0.7, # 半徑為0.5,標簽距圓心距離為0.7 colors = colors, wedgeprops = dict(linewidth = 1.2, width = 0.3, edgecolor = 'w')) plt.title('(c)多樣本嵌套環(huán)形圖', fontsize = 13, color = 'black') # plt.tight_layout()

都讀到這里了,不妨關注、點贊一下吧!
|