zoukankan      html  css  js  c++  java
  • pandas_matplot_seaborn

    import pandas as pd
    #import matplotlib
    #unrate= pd.read_csv("unrate.csv")
    # 把时间格式 1948/1/10 转化为 1948-01-10
    #unrate["DATE"] = pd.to_datetime(unrate['DATE'])
    #折线图
    import matplotlib.pyplot as plt
    import seaborn as sns
    import numpy as np
    import pandas as pd
    from scipy import stats, integrate
    import matplotlib.pyplot as plt
    import matplotlib as mpl

    titannic = sns.load_dataset("titanic")
    tips = sns.load_dataset("tips")
    iris =sns.load_dataset('iris')
    '''
    admission = pd.read_csv(admissions.csv")
    admission_t = admission[0:12]
    plt.plot(admission_t['gpa'],admission_t['gre']) #画出图形
    plt.xticks(rotation = 25) #改变x轴标记名的角度
    #添加轴标题
    plt.xlabel("hello")
    plt.ylabel("world")
    #添加标题
    plt.title("hello world")
    #plt.show()


    fig = plt.figure(figsize=(3,3)) #默认画图区间
    #ax1 = fig.add_subplot(2,2,1) #2,2代表矩阵大小 1 代表位置
    #ax2 = fig.add_subplot(2,2,2)
    #ax4 = fig.add_subplot(2,2,4)
    plt.show()

    unrate=pd.read_csv("admissions.csv")
    fig = plt.figure(figsize = (10,6))

    colors = ['red','green',"blue","orange",'black']
    for i in range(5):
    start_index = i*12
    end_index = (i+1)*12
    subset = unrate[start_index: end_index]
    label = str(1958+i) #右上角的提示框
    plt.plot(subset["gpa"],subset["gre"],c = colors[i],label = label)
    plt.legend(loc = 'best') #定义提示图标的位置


    plt.show()

    #柱子行图
    from numpy import arange
    #先要获取每个柱子的高度数据,在获取横坐标的数据
    reviews = pd.read_csv(".csv") #获得文件对象DataForm
    cols = ['FILM','RT_usr_norm','IMDB_norm']
    norm_recives = reviews[cols] # Serise

    num_cols = ['frist',"second",'third', 'four','five']
    bar_height =norm_recives.ix(0,num_cols).values #柱形图高度
    bar_positions = arange(5)+ 0.75 #柱形图的位置

    fig,ax = plt.subplots()
    ax.bar = (bar_positions,bar_height,0.3) #0.3代表柱子的宽度把柱形图放到窗口上

    #plt.show()
    #库 DATa Form Series
    #ax 图形操作
    #
    fig, ax = plt.subplots()

    ax.hist(norm_recives)

    #加载文件
    recive_csv = pd.read_csv("cleaned_loans2007.csv")
    #cols = ['clo1','col2','col3','col4']
    #correct_csv = recive_csv[cols]

    fig , ax = plt.subplots()
    ax.hist(recive_csv['revol_bal']) #给出列名
    # 统计相同值的个数的分布区间并用柱形图表示出来
    plt.show()

    #data visualzation

    #画图 导入包
    #%matplotlib inline
    def sinplot(flip=1):
    x = np.linspace(0,14,100) #在区间(0,14)找到100个点
    for i in range(1,7): #画6条线
    plt.plot(x,np.sin(x+i*5)*(7-i)*flip) #计算每个点的高度,并画在视图上
    plt.show()
    #sinplot()#函数调用
    #seaborn设置主题风格:
    #sinplot()
    sns.set_style('whitegrid')
    data = np.random.normal(size =(20,6)) #+np.arange(6)/2 #正态分布的概率密度函数
    # 20行6 列的 二维数组
    print(data.shape)
    print(data)
    sns.boxplot(data = data) #加载数据
    #plt.show() #把试图显示出来
    #sns.set_style('ticket') #带短线段
    print(help(np.linspace))
    #sinplot() 调用函数

    dd = np.linspace(0,5,100) #随机生成0 到5 之间的100个数 并排序
    print(type(dd))
    print(dd)

    import numpy as np
    N = 8
    y = np.zeros(N) #初始化一个包含8个0的np.array
    print(y)
    x1 = np.linspace(0, 10, N, endpoint=True) #生成8个x 轴坐标
    print(x1)
    x2 = np.linspace(0, 10, N, endpoint=False)
    print(x2)
    plt.plot(x1, y, 'o') #画第一个

    plt.plot(x2, y + 0.5, 'o') #画图

    plt.ylim([-0.5, 1])

    plt.show()


    sns.set_style() #设置风格
    sns.despine(left = True)
    with sns.axes_style('darkgrid'):
    plt.subplot(211) #对子图设风格的设置
    sinplot()
    sns.set_context("paper")
    plt.figure(figsize = (8,6))

    hls 颜色空间

    current = sns.color_palette()
    set_palette()
    指标

    #sns.set(rc={"figure.figsize":(6,6)})
    current = sns.color_palette()
    sns.palplot(sns.color_palette('hls',8)) #改变主题颜色

    #离散性 连续性的
    #data = np.random.normal(size=(20,8))+np.arange(8)/2
    #sns.boxplot(data = data,palette=sns.color_palette('hls',4)) #展示数据试图类型颜色
    #颜色种类 l 亮度 是 饱和度
    #sns.color_palette('hls',8,l=7,s=9)


    plt.plot([0.1],[0.1],sns.xkcd_rgb['pale red'],lw=3)
    plt.show()

    sns.palplot(sns.color_palette("Blue"))#渐变
    sns.palplot(sns.color_palette("Blue_r"))#渐变由深到前

    sns.palplot(sns.cubechelix_palette(8,start=5,rot=-75))
    sns.palplot(sns.light_palette("green"))#渐变

    x,y = np.random.multivariate_normal([0,0],[[1,-5],[-5,1]],size = 300).T
    print(x,y)
    pal = sns.dark_palette("red",as_cmap = True)
    # 画火山图
    sns.kdeplot(x,y,cmap = pal)# 把位置 和颜色传进来
    plt.show()
    当拿到数据后分析单变量单特征分析
    数据是由特征组成,把特征的分布情况了解清楚


    sns.set(color_codes= True)
    aa = np.random.seed(sum(map(ord,"distributions")))
    print(type(aa))
    print(aa)
    x = np.random.normal(size = 100) #生成高斯数据
    #kde核密度估计 高斯伦布 bins 切分20个等份 查看分布状态 fit
    x = np.random.gamma(6,size = 200)
    #方图
    sns.distplot(x,kde=False,fit=stats.gamma)#生成方形图
    plt.show()

    #均值 协方差 数据特征和特征之间的关系 用散点图 单特征用方图
    mean,cov = [0,1],[(1,.5),(.5,1)]
    data = np.random.multivariate_normal(mean,cov,200)#生成二维数据
    df = pd.DataFrame(data,columns=['x','y'])#生成DataFrame格式数据
    #散点图方法
    sns.jointplot(x='x',y='y',data=df) #生成散点图
    plt.show()

    mean,cov = [0,1],[(1,.5),(.5,1)]
    x,y = np.random.multivariate_normal(mean,cov,1000).T #加上.T 转化为元祖
    with sns.axes_style('white'): #设计风格 king 指定图形类型为hex图
    sns.jointplot(x=x,y=y,kind = 'hex',color = 'k')
    plt.show()
    数据量小用 散点图 数据量打用hex图


    #四个特征 两两特征对比

    iris = sns.load_dataset('iris')
    # 特征和特征之间的可视化显示
    sns.pairplot(iris)
    plt.show()

    绘制回归线型图 regplot()

    tips= sns.load_dataset('tips')

    print(tips.head())
    # 指标x 与指标y 的关系
    #sns.regplot(x='total_bill',y='tip',data=tips)

    #数据抖动
    sns.regplot(data = tips,x='size',y = 'tip',x_jitter=.05)
    plt.show()



    #strip类型图
    #sns.stripplot(y = 'day',x='total_bill',data = tips,jitter=False)

    #圣诞树类型的图
    #sns.swarmplot(x ='day',y= 'total_bill',data = tips)
    #盒图 IQR 统计学四分位距 第四分之一和四分之三位之间的距离
    #N = 1.5IQR 如果一个值> Q3+n 或者 < Q1-N 则称为离群点
    #sns.boxplot(x='day',y = 'total_bill',hue = 'time',data = tips)

    #梯形图
    #sns.violinplot(y = 'total_bill',x ='day',hue = 'time',data = tips,split= True)
    #alpha = True #透明度
    #柱形图
    #sns.barplot(x = 'sex',y='survived',hue="class",data = titannic)

    #点图
    sns.pointplot(x = 'sex',y = 'survived',hue = 'class',data = titannic,palette={'male':'g','female':'m'},markers = ['^','o'],linestyles = ['-','--'])
    #sns.pointplot(x = 'sex',y = 'survived',hue= 'class',data = titannic,palette={'male':'g','female':'m'},markers = ['^','o'],linestyles = ['-','--'])
    #多层图
    sns.factorplot(x = 'day',y = 'total_bill',kind = "多型图")
    '''

    #g = sns.FacetGrid(tips,col = 'time',hue = 'smoker') #实例化一个 FactGrid对象
    # plt.hist 条形图
    #g.map(plt.hist,'tip')
    #散点图
    #g.map(plt.scatter,'total_bill','tip',alpha = 7)

    #指定画图顺序:
    from pandas import Categorical
    ordered_days = tips.day.value_counts().index
    ordered_days = Categorical(['Thur','Tri','Sat','Sun'])
    #('指定新的排序方式')
    g = sns.FacetGrid(tips,row = 'day',row_order= ordered_days,size = 7,aspect= 4)#创建一个FacetGrip对象
    g.map(sns.boxplot,'total_bill') #指定画图方式 和数据

    plt.show()#让图片显示出来
  • 相关阅读:
    判断一个数组是不是一维数组
    XML5个转义符:<,>,&,”,©;的转义字符分别如下: &lt; &gt;&amp; &quot; &apos;
    linux crontab & 每隔10秒执行一次
    微信企业号-根据code获取成员信息(过期code)
    Namespace declaration statement has to be the very first statement in the script-去除bom头
    去掉一个字符前面的全部0
    检查一个数字是否为个位数
    nginx配置location总结及rewrite规则写法
    QT 4.7支持中文(QT4.7)(中文)(makeqpf)
    【转】vlc android 代码编译
  • 原文地址:https://www.cnblogs.com/countryboy666/p/11223460.html
Copyright © 2011-2022 走看看