python pandas做資料分析檢視分析matplotlib,seaborn模組使用

涼城的夜發表於2018-01-09
#!/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, 也就是說相關係數介於 - 11之間
    # corr(x, y) = 0 則稱X, Y不相關,不相關是指X, Y沒有線性關係,但也有可能有其他關係,比如平方關係,立方關係等
    # corr(x, y) = 1, 則稱XY完全正相關,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

相關文章