您的位置:首页 > 编程语言 > Python开发

python pandas做数据分析视图分析matplotlib,seaborn模块使用

2018-01-09 14:23 1001 查看
#!/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[/code] 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pandas模块