#!/usr/bin/env python
# encoding: utf-8
"""
@version: v1.0
@author: W_H_J
@license: Apache Licence
@contact: 415900617@qq.com
@site:
@software: PyCharm
@file: flowerPlot.py
@time: 2018/1/5 18:59
@describe:鳶尾花資料 -使用pandas做分析,用mayploylib模組作圖
"""
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white", color_codes=True)
def func():
url_2 = 'https://raw.github.com/pydata/pandas/master/pandas/tests/data/iris.csv'
iris = pd.read_csv(url_2)
iris1 = iris.copy()
iris1['Id'] = range(0, len(iris['Name']))
print iris1.head()
print iris.head()
print iris['Name'].value_counts() # 統計種類數量
# 使用 .plot 做散點圖
iris.plot(kind="scatter", x="SepalLength", y="SepalWidth", color='r') # 資料為萼片的長和寬 scatter散點圖
# 開始使用seaborn了它能同時顯示直方圖
sns.jointplot(x="SepalLength", y="SepalWidth", data=iris, size=5)
# 我們還可以用seaborn's FacetGrid 標記不同的種類噢
sns.FacetGrid(iris, hue="Name", size=5)\
.map(plt.scatter, "SepalLength", "SepalWidth")\
.add_legend() # hue英文是色彩的意思 # 注意這裡的plt哦
# 這圖可以變現出密度的分佈 --小提琴圖
sns.violinplot(x="Name", y="PetalLength", data=iris, size=6)
# 通過這個曲線圖可以看出不同特徵值時的分佈密度
sns.FacetGrid(iris, hue="Name", size=6).map(sns.kdeplot, "PetalLength").add_legend()
# pairplot顯示不同特徵之間的關係
sns.pairplot(iris1.drop("Id", axis=1), hue="Name", size=3)
# 修改引數dige_kind
sns.pairplot(iris1.drop("Id", axis=1), hue="Name", size=3, diag_kind="kde")
plt.show()
# corr(x, y)
# 相關係數,用來刻畫二維隨機變數兩個分量間相互關聯程度
# -1 < corr(x, y) < 1, 也就是說相關係數介於 - 1到1之間
# corr(x, y) = 0 則稱X, Y不相關,不相關是指X, Y沒有線性關係,但也有可能有其他關係,比如平方關係,立方關係等
# corr(x, y) = 1, 則稱X與Y完全正相關,corr(x, y) = -1, 則稱X, Y完全負相關
print iris.corr()
# 在多變數概率統計中,散佈矩陣是用來估計多維正態分佈協方差的統計量。
pd.plotting.scatter_matrix(iris, alpha=0.2, figsize=(6, 6), diagonal='kde')
plt.show()
# print iris.boxplot() # 箱圖 DataFrame提供了boxplot方法可以用來畫箱圖。
iris.boxplot(by='Name', figsize=(8, 8))
plt.show()
# 直方圖和概率密度分佈
print iris.ix[:, :-1].head()
iris.ix[:, :-1].hist() # hist直方圖
iris.plot(kind='kde') # kde# 密度圖
plt.show()
# 多變數的視覺化
pd.plotting.radviz(iris, 'Name') # 徑向座標視覺化(radviz)徑向座標視覺化是基於彈簧張力最小化演算法
plt.show()
pd.plotting.andrews_curves(iris, 'Name') # 調和曲線圖 調和曲線圖的思想和傅立葉變換十分相似,是根據三角變換方法將 p 維空間的點對映到二維平面上的曲線上
plt.show()
pd.plotting.parallel_coordinates(iris, 'Name') # 輪廓圖的思想非常簡單、直觀,它是在橫座標上取 p 個點,
# 依次表示各個指標 (即變數);橫座標上則對應各個指標的值
# (或者經過標準化變換後的值),然後將每一組資料對應的點依次連線即可。
plt.show()
class Main():
def __init__(self):
func()
if __name__ == "__main__":
Main()
# http://nbviewer.jupyter.org/gist/cloga/9171281#%E5%9F%BA%E6%9C%AC%E7%94%BB%E5%9B%BE%E5%91%BD%E4%BB%A4