python 資料視覺化
1、散點圖
plot(x, y, '.', color = (r,g,b))
plt.xlable('x軸標籤')
plt.ylable('y軸標籤')
x,y x軸和y 軸的序列 ; '.', '。'小點還是大點 color, 散點圖的顏色,可以用rgb定義,也可以用英文字母定義
plt.grid(True, linestyle = "-.", color = "r", linewidth = "3")
# True 顯示網格 # linestyle 設定線顯示的型別(一共四種) # color 設定網格的顏色 # linewidth 設定網格的寬度#散點圖 importmatplotlib#%% from pandas import read_csv#%% import matplotlib.pyplot as plt from matplotlib.font_manager import _rebuild _rebuild() from pylab import mpl #%% data = read_csv("/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.1/data.csv") #%% 設定成中文!!!! mpl.rcParams['font.sans-serif']=[u'SimHei'] mpl.rcParams['axes.unicode_minus']=False #%% #plt.plot(data['廣告費用'], data['購買使用者數'], '.') #plt.plot(data['廣告費用'], data['購買使用者數'], 'o') plt.plot(data['廣告費用'], data['購買使用者數'], 'o', color='yellow') #plt.plot(data['廣告費用'], data['購買使用者數'], 'o', color=(1, 1, 0)) #plt.plot(data['廣告費用'], data['購買使用者數'], 'o', color='#FFFF00')plt.xlabel('廣告費用')#%% plt.ylabel('購買使用者數') plt.grid(True) #%% plt.grid(True, linestyle = "-.", color = "r", linewidth = "3") #%% plt.show()
2、折線圖
plot(x, y, style, color, linewidth)
title('圖的標題')
style 畫線的樣式 color 畫線的顏色 linewidth 線的寬度
#折線圖 import pandas#%% from pandas import read_csv#%% from matplotlib import pyplot as plt data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.2/data.csv') #對日期格式進行轉換 data['日期']=pandas.to_datetime(data['日期']) data.rename(columns={'日期':'購買日期'},inplace=True) #設定線條粗細 plt.plot(data['購買日期'], data['購買使用者數'], '-', color='r', lineWidth=2) plt.xlabel('購買日期') plt.ylabel('購買使用者數') #'-' 順滑的曲線 #'--' 虛線 #'-.' 線加點 #':' 由點組成的曲線 #'.' 散點圖 #',' 畫素點的散點圖 #'o' 大點的散點圖 #'v' 下三角標記的散點圖 #'^' 上上角標記的散點圖 #'<' 左角標記的散點圖 #'>' 右角標記的散點圖 #'1' 傘形下的標記散點圖 #'2' 傘形上的標記散點圖 #'3' 傘形左的標記散點圖 #'4' 傘形右的標記散點圖 #'s' 正方形標記的散點圖 #'p' 五角形標記的散點圖 #'*' 五角星標記的散點圖 #'h' 多邊形標記的散點圖 #'H' hexagon2 marker #'+' plus marker #'x' x marker #'D' diamond marker #'d' thin_diamond marker #'|' vline marker #'_' hline marker plt.title('購買使用者數時間序列圖') plt.show()
3、餅圖
pie(x, labels, colors, explode, autopct);
x 進行繪製的序列, labels 拼圖的個部分標籤, colors, 餅圖的各部分顏色,使用rgb標色 explode需要突出的塊狀序列,即各塊距離中心的位置 autopct 餅圖佔比的顯示格式 , %.2f: 保留兩位小數
import numpy import matplotlib from pandas import read_csv import matplotlib.pyplot as plt#%% data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.3/data.csv') #%% # 進行分組 gb = data.groupby( by=['通訊品牌'], as_index=False )['號碼'].agg({ '使用者數':numpy.size }) #%% #pip install matplotlib font = { 'family' : 'SimHei' } matplotlib.rc('font', **font) #%% plt.pie(gb['使用者數'], labels=gb['通訊品牌'],colors=[(1,0.1,1),(1,0.5,1),(0,0,1)],explode=[0.2,0,0.1],autopct='%.2f%%')#%% plt.show()
4. 柱形圖:
d.bar(left, height, width, color)
barh(bottom, width, height,color)
left, x 軸的位置序列,一般採用arrange函式產生一個序列
height, y 軸的數值序列,也就是柱形圖的高度
width , 柱形圖的寬度,一般設定為1即可
color 柱形圖 填充顏色
d.xticks (位置,標籤)
d.yticks (位置,標籤)
普通 豎向/橫向 柱形圖
import numpy; import matplotlib; from pandas import read_csv; from matplotlib import pyplot as plt; font = { 'family' : 'SimHei' }; matplotlib.rc('font', **font); data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.4/data.csv'); gb = data.groupby( by=['手機品牌'] )['月消費(元)'].sum() index = numpy.arange(gb.size); #豎向柱形圖 plt.bar(index, gb, 1, color='G'); plt.show(); #%% 加上了標籤 plt.bar(index, gb, 1, color='G'); plt.xticks(index + 1/2, gb.index); plt.show(); #%% #橫向柱形圖 並加上了標籤 plt.barh(index, gb, 1, color='G'); plt.yticks(index + 1/2, gb.index); plt.show();
多組柱狀圖
d.index.levels[a] :多層索引取第a層
d.[:,a] 多層索引 依據第二個索引求值 適用於series
d.legend(標籤,loc=2) loc為存放位置
import numpy import matplotlib from pandas import read_csv from matplotlib import pyplot as plt font = { 'family' : 'SimHei' } matplotlib.rc('font', **font) data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.4/data.csv') d1 = '手機品牌'#%% d2 = '通訊品牌'#%% v = "月消費(元)" # 進行分組 並將多級分組放入索引裡面 df = data.groupby(by=[d1,d2])['月消費(元)'].apply(lambda x: sum(x)) #%% d1size = df.index.levels[0].size #%% d2size = df.index.levels[1].size # 求出橫座標的為主 index = numpy.arange(d1size) #%% colors=['r', 'g', 'b'] #%% a = df.index.levels[0] b = df.index.levels[1] #%% print(df[:,'全球通']) # 依據第二格索引求值 適用於series print(b[0]) # 索引的取值 #%% for i in range(0, d2size): x = b[i] # 求出索引名 sb = df[:,x] # 通過索引求出值 sa = sb.values # 轉換成向量 bar = plt.bar(index * d2size + i, sa, color=colors[i]) # 這裡用series 和array 即 sb 和 sa都行 lIndex = numpy.arange(d1size)*d2size # 取等差數列 plt.xticks(lIndex + 3/2, df.index.levels[0]) # 確定橫座標的標籤 plt.legend(df.index.levels[1],loc=2) # 帶等於號的引數放在後面,此引數用來調整所在位置 #%% plt.show()#%%
多分類累積柱狀圖
多了一個bottoms 引數
import numpy#%% import matplotlib#%% from pandas import read_csv#%% from matplotlib import pyplot as plt#%% font = { 'family' : 'SimHei' }#%% matplotlib.rc('font', **font)#%% data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.4/data.csv')#%% d1 = '手機品牌'#%% d2 = '通訊品牌'#%% v = "月消費(元)"#%% gb = data.groupby([d1, d2])['月消費(元)'].sum()#%% d1size = gb.index.levels[0].size d1 = gb.index.levels[0] d2size = gb.index.levels[1].size d2= gb.index.levels[1] index = numpy.arange(d1size)#%% colors = ['r', 'g', 'b']#%% #%% bsum = index*0.0#%% print(bsum) # 多分類累積柱狀圖 bsum 有點不太懂 for i in range(0, d2size): x = d2[i] subgb = gb[:,x] bar = plt.bar(index, subgb, color=colors[i], bottom=bsum) # 是為了讓最開始的不被覆蓋掉? bsum += subgb # bottom需要傳入的是[第0個類別~(當前類別-1)]的資料總和。 plt.xticks(index+1/2, gb.index.levels[0])#%% plt.legend(gb.index.levels[1])#%% plt.show()#%%
5.直方圖
hist(x,color,bins,cumulative=False)
x 需要進行繪製的向量 color 直方圖的填充顏色 bins 設定直方圖的分組個數
cumulative 設定是否累積技術
import matplotlib; from pandas import read_csv; from matplotlib import pyplot as plt; import numpy font = { 'family' : 'SimHei' }; matplotlib.rc('font', **font); data = read_csv('/Volumes/CHASESKY/python/03-資料分析與資料探勘篇/1-資料分析資料視覺化實戰-(Python3.5)/章節5資料視覺化/5/5.4/data.csv') data['購買使用者數']=numpy.random.randint(0,100,31402) #%% plt.hist(data['購買使用者數']); plt.show(); # 設定了分組個數 plt.hist(data['購買使用者數'], bins=50); plt.show(); # 進行累積 plt.hist(data['購買使用者數'], bins=20, cumulative=True); plt.show();