精华内容
下载资源
问答
  • 持续更新~ 散点图 条形图 文氏图 饼图 盒型图 频率直方图 热图 PCA图 3D图 火山图 分面图 分面制作小组图 地图 练习数据: year count china Ame jap '12 2.800000 1.500000 4.500000 2.500000 '13 2.941956 1....

    持续更新~


    散点图

    条形图

    文氏图

    饼图

    盒型图

    频率直方图

    热图

    PCA图

    3D图

    火山图

    分面图

    分面制作小多组图

    image

    地图

    image

     

     

    练习数据:

    year count china Ame jap
    '12 2.800000 1.500000 4.500000 2.500000
    '13 2.941956 1.587559 5.342547 2.814862
    '14 3.508838 1.648075 5.429438 2.701108
    '15 4.011208 1.533966 5.419301 2.660671
    '16 4.341734 1.634622 5.075504 2.925912

     

    想研究某现象的分子机制,老板豪气的来一句,先测个转录组吧,看下差异表达基因。

    是否在心里窃喜,制个样就完事了,太easy有木有。等大堆数据回来的时候,是不是傻眼了?

    从何下手挑选差异表达基因呢?
    今天就先来聊聊如何看差异表达基因数据,火山图,聚类图又怎么看1差异基因筛选方法那差异基因是如何筛选出来的呢?差异基因的筛选方法有很多,包括倍数法、T检验、F检验及SAM等
    下面简单介绍一下GCBI平台上用的倍数法和SAM法。
    倍数法适用于没有生物学重复的样本,其计算基因在两个条件下表达水平的比值,确定比值的阈值,将绝对值大于此阈值的基因判断为差异基因。
    SAM算法适用于有生物学重复的样本,通过对分母增加一个常量 T 检验过程减小了假阳性发生的概率。文献中报道,相较于其他算法,SAM算法更为稳定,筛选出的结果也更为准确。2差异基因数据解读经过合适的差异基因方法筛选出的差异基因,结果一般分为两部分,数据+图形。
    数据结果展示如下图所示(两分组)gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==众多参数中,重点看三个。

    image

    p-value或q-value

    没有做生物学重复请跳过这一步。
    p-value或q-value是统计学检验变量,代表差异显著性,一般p-value或q-value小于0.05代表具有显著性差异,但可根据具体情况适当调整
    因为p-value或q-value衡量地是某个基因假阳性的概率,如果p-value或q-value越低,那么挑选该基因出现假阳性的概率就越低,可验证性就越高。
    两者具体的计算方法具体如下:gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==那p-value、q-value同时存在时看哪个呢?

    image
    SAM法只有q-value当两者同时存在时,可根据具体情况具体分析。
    差异筛选是一个典型的多重假设检验过程,对于多重假设检验,单次检验中差异显著基因的假阳性率(p-value较小)可能会较大,而q-value和FDR值较常见的BH校正方法得到的FDR值而言,改进了其对假阳性估计的保守性。
    即q-value相比于p-value更加严格,当差异基因结果较少时,可以退而求其次看p-value。Fold ChangeFold Change表示实验组比上对照组的差异表达倍数,一般表达相差2倍以上是有意义的,放宽要求1.5倍或者1.2倍也可以接受。
    看表达倍数的同时还需结合基因表达丰度,信号值太低的基因会在后续的验证实验中检测不到。3差异基因图表解读在差异结果的图形展示结果中,主要是火山图聚类图。火山图火山图只针对两分组且有生物学重复的情况。
    如何看火山图呢?

    image

    火山图可反映总体基因的表达情况,横坐标代表log2(Fold Change),纵坐标表示-log10(P值),每个点代表一个基因,颜色用以区分基因是否差异表达,图中橙色的点代表差异表达基因,蓝色的点代表没有差异表达的基因。聚类图

    image

    聚类图可以衡量样本或基因之间表达的相似性
    如上图所示的聚类图中,横坐标代表样本聚类,一列代表一个样本,聚类基于样本间基因表达的相似性,样本间基因表达越接近,靠的越近,以此类推。
    纵坐标代表基因聚类,一行代表一个基因,聚类基于基因在样本中表达的相似性,基因在样本中表达越接近,靠的越近,以此类推。
    色阶代表基因表达丰度,越红代表上调得越明显,越绿代表下调得越明显。
    如何做聚类图请戳往期推送

    做个聚类图只需1分钟
    差异基因有了,如何挑选潜在基因进行实验验证呢?
    关键还在于感兴趣点在哪了。粗略的看,可以先看KEGG或者GO功能分类,看差异基因具体富集在哪些通路或功能。
    比如关注的是细胞内脂肪酸合成关键酶,可以重点看脂肪酸合成和碳流相关通路。具体如何看KEGG或者GO功能分类,请听下回分解。

     

    参考资料:微信搜ggplot会有很多案例

    关于统计图形的配色,看看这俩R包

    R语言可视化——ggplot的theme订制

    R笔记6:ggplot绘制商务图表--分面制作小多组图

    R笔记:ggplot绘制商务图表--中国分省热力地图

    转载于:https://www.cnblogs.com/leezx/p/6601967.html

    展开全文
  • # -*- coding:utf-8 -*- """ 作者:95345 日期:2021年05月31日 """ import xlrd import numpy as np import matplotlib.pyplot as plt ... table1 = data.sheet_by_name('flights') # 通过excel里面的

    学习样例

    开发工具:python3.8、pycharm2020.3.3
    开发过程

    分析数据

    在这里插入图片描述
    总共三列数据,分别是年份,月份及对应的客流量,如果将数据可视化,我们可以将年份作为横坐标,可以将客流量总和作为纵坐标,也可以将客流量的平均值作为纵坐标,体现每年客流量总量的变化,等等

    引入模块

    首先我们的目的是获取xls文件并作图,那么就要引入相关的模块

    import xlrd
    import matplotlib.pyplot as plt
    

    若当前项目文件中还没有这两个模块就需要先下载,具体操作过程
    点击file -> Settings 或 ctrl+alt+s
    在这里插入图片描述
    进入设置页面后,找到Project:项目名中的Python Interpreter,点击下方加号
    在这里插入图片描述
    在搜索框中搜索需要的模块,点击Install Package,之后等待下载即可
    在这里插入图片描述
    成功引入相关模块之后,我们就要开始获取xls文件中的数据了

    获取数据

    利用xlrd中的方法获取指定文件指定工作表中的全部数据,其数据是一个列表形式,注意这里flights.xls文件与当前写的xx.py文件需要在同一文件夹内才能获取到数据
    在这里插入图片描述
    可以通过 open in Explorer打开所在文件夹
    在这里插入图片描述
    也可以直接在电脑里查找这个文件夹
    在这里插入图片描述

    data = xlrd.open_workbook("flights.xls")  # 打开excel文件
    table1 = data.sheet_by_name('flights')  # 通过excel里面的表名获取工作表
    

    接下来对得到的数据进行操作

    处理数据

    先要获得各表头所在列号

    row1 = table1.row_values(0)  # 根据索引读取一行的数据,即表头
        for i in range(len(row1)):  # 获取各表头所在列号
            if row1[i] == 'year':
                oneindex1 = i
            elif row1[i] == 'month':
                oneindex2 = i
            elif row1[i] == 'passengers':
                oneindex3 = i
    

    得到各表头所在列号后,我们将所有数据按列存储到列表中

    # 获取year、month、passengers三列的数据
    year = table1.col_values(oneindex1, 1)
    month = table1.col_values(oneindex2, 1)
    passengers = table1.col_values(oneindex3, 1)
    

    因为我们直方图的横坐标为年份,所以我们需要对year这一列数据进行去除处理

    # 剔除year列表中重复元素,并重新排列
    Year = list(sorted(set(year)))
    

    因为我们直方图的纵坐标为乘流量的总和,所以我们需要对每一年12个月的乘流量求和

    # Passenger_Number存放各year的Passenger的总和
    Passenger_Number=[]
    for i in range(len(Year)):
        sum=0
        for j in range(len(passengers)):
            if(year[j]==Year[i]):
                sum+=passengers[j]
        Passenger_Number.append(int(sum))
    

    如果需要的是该年每个月的平均客流量,只需要求和后做个除法,需要注意的是:结果不一定为整数,需要以浮点型数据输出

    # Passenger_Avg存放各year的Passenger的平均值
    Passenger_Avg = []
    for i in range(len(Passenger_Number)):
        avg=Passenger_Number[i]/12
        Passenger_Avg.append(float('%.3f' % avg))
    

    得到横坐标数据及其对应的纵坐标数据后,就可以开始画图了

    作图

    plt.xlabel('Date') #设置横坐标
    plt.ylabel('Number of Passenger') #设置纵坐标
    plt.bar(Year, Passenger_Number) #生成条形图
    # 在直方图中各柱的头上标注其值
    for a, b in zip(left, height):
        plt.text(a, b + 1, b, ha='center', va='bottom')
    plt.show() 
    

    bar(x, height, width=0.8, bottom=None, ***, align=‘center’, data=None, *kwargs)
    参数如下
    在这里插入图片描述
    可以通过修改这些参数得到各种自己需要的图形

    成果图

    1949-1960每年乘客总量
    1949-1960每年乘客总量
    1949-1960每年乘客平均值
    1949-1960每年乘客平均值

    完整代码

    # -*- coding:utf-8 -*-
    """
    作者:95345
    日期:2021年05月31日
    """
    import xlrd
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    def main():
        data = xlrd.open_workbook("flights.xls")  # 打开excel文件
        table1 = data.sheet_by_name('flights')  # 通过excel里面的表名获取工作表
    
        row1 = table1.row_values(0)  # 根据索引读取一行的数据,参数:行索引,开始列索引,结束列索引(不包含)
        for i in range(len(row1)):  # 获取表头
            if row1[i] == 'year':
                oneindex1 = i
            elif row1[i] == 'month':
                oneindex2 = i
            elif row1[i] == 'passengers':
                oneindex3 = i
    
        # 获取year、month、passengers三列的数据
        year = table1.col_values(oneindex1, 1)
        month = table1.col_values(oneindex2, 1)
        passengers = table1.col_values(oneindex3, 1)
    
        # 剔除year列表中重复元素,并重新排列
        Year = list(sorted(set(year)))
    
        # Passenger_Number存放各year的Passenger的总和
        Passenger_Number=[]
        for i in range(len(Year)):
            sum=0
            for j in range(len(passengers)):
                if(year[j]==Year[i]):
                    sum+=passengers[j]
            Passenger_Number.append(int(sum))
    
        # Passenger_Avg存放各year的Passenger的平均值
        Passenger_Avg = []
        for i in range(len(Passenger_Number)):
            avg=Passenger_Number[i]/12
            Passenger_Avg.append(float('%.3f' % avg))
        Show(Year,Passenger_Avg)
    
    def Show(left,height):
        print("**************************开始绘图**************************")
        plt.xlabel('Date') #设置横坐标
        plt.ylabel('Number of Passenger') #设置纵坐标
        plt.bar(left, height)
        # 在直方图中各柱的头上标注其值
        for a, b in zip(left, height):
            plt.text(a, b + 1, b, ha='center', va='bottom')
        plt.show()
    
    if __name__ == '__main__':
        main()
    

    其他样例

    # -*- coding:utf-8 -*-
    # -*- coding:utf-8 -*-
    """
    作者:95345
    日期:2021年05月31日
    """
    import xlrd
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    def main():
        data = xlrd.open_workbook("exercise.xls")  # 打开excel文件
        table1 = data.sheet_by_name('exercise')  # 通过excel里面的表名获取工作表
    
        row1 = table1.row_values(0)  # 根据索引读取一行的数据,参数:行索引,开始列索引,结束列索引(不包含)
        for i in range(len(row1)):  # 获取表头
            if row1[i] == 'diet':
                oneindex1 = i
            elif row1[i] == 'pulse':
                oneindex2 = i
            elif row1[i] == 'time':
                oneindex3 = i
            elif row1[i] == 'kind':
                oneindex4 = i
    
        # 获取diet、pulse、time、kind四列的数据
        diet = table1.col_values(oneindex1, 1)
        pulse = table1.col_values(oneindex2, 1)
        time = table1.col_values(oneindex3, 1)
        kind = table1.col_values(oneindex4, 1)
    
        diet_kind=[]
        for i in range(len(diet)):
            str=diet[i]+' '+kind[i]+' '+time[i]
            diet_kind.append(str)
    
        # 剔除diet_kind列表中重复元素,并重新排列
        dk = list(sorted(set(diet_kind)))
    
        # Passenger_Number存放各year的Passenger的总和
        pulse_Avg=[]
        for i in range(len(dk)):
            sum=0
            for j in range(len(pulse)):
                if(diet_kind[j]==dk[i]):
                    sum+=pulse[j]
                    avg=sum/5
            pulse_Avg.append(float('%.3f' % avg))
    
        pulse_Avg_low=[]
        pulse_Avg_no=[]
        for i in range(len(dk)):
            if(i>=len(dk)/2):
                pulse_Avg_no.append(pulse_Avg[i])
            else:
                pulse_Avg_low.append(pulse_Avg[i])
    
        left=[]
        for i in range(len(diet)):
            str=kind[i]+' '+time[i]
            left.append(str)
        Left = list(sorted(set(left)))
    
        Show(Left,pulse_Avg_low)
        # Show(Left,pulse_Avg_no)
    
    def Show(left,height):
        print("**************************开始绘图**************************")
        plt.xlabel('kind_time') #设置横坐标
        plt.ylabel('pulse of low fat') #设置纵坐标
        plt.bar(left, height)
        # 在直方图中各柱的头上标注其值
        for a, b in zip(left, height):
            plt.text(a, b + 1, b, ha='center', va='bottom')
        plt.show()
    
    if __name__ == '__main__':
        main()
    

    对于no fat 相应时间和状态对应的平均脉搏
    在这里插入图片描述

    对于low fat 相应时间和状态对应的平均脉搏
    在这里插入图片描述

    # -*- coding:utf-8 -*-
    """
    作者:95345
    日期:2021年06月02日
    """
    import xlrd
    import matplotlib.pyplot as plt
    
    def main():
        data = xlrd.open_workbook("penguins.xls")  # 打开excel文件
        table1 = data.sheet_by_name('penguins')  # 通过excel里面的表名获取工作表
    
        row1 = table1.row_values(0)  # 根据索引读取一行的数据,参数:行索引,开始列索引,结束列索引(不包含)
        for i in range(len(row1)):  # 获取表头
            if row1[i] == 'species':
                oneindex1 = i
            elif row1[i] == 'island':
                oneindex2 = i
            elif row1[i] == 'bill_length_mm':
                oneindex3 = i
            elif row1[i] == 'bill_depth_mm':
                oneindex4 = i
            elif row1[i] == 'flipper_length_mm':
                oneindex5 = i
            elif row1[i] == 'body_mass_g':
                oneindex6 = i
            elif row1[i] == 'sex':
                oneindex7 = i
    
        # 获取全部7列的数据
        species = table1.col_values(oneindex1, 1)
        island = table1.col_values(oneindex2, 1)
        bill_length = table1.col_values(oneindex3, 1)
        bill_depth = table1.col_values(oneindex4, 1)
        flipper_length = table1.col_values(oneindex5, 1)
        body_mass = table1.col_values(oneindex6, 1)
        sex = table1.col_values(oneindex7, 1)
    
        # 将species与island结合,并剔除其中中重复元素,重新排列
        species_island=[]
        for i in range(len(species)):
            if(sex[i]=='MALE'):
                sex[i]='M'
                species_island.append(species[i][0:3]+"_"+island[i][0:3]+"_"+sex[i])
            elif(sex[i]=='FEMALE'):
                sex[i] ='F'
                species_island.append(species[i][0:3]+"_"+island[i][0:3]+"_"+sex[i])
        S_I = list(sorted(set(species_island)))
    
        # 避免重复求平均 用一个函数实现
        def GetAvg(xx,xx_avg):
            for i in range(len(S_I)):
                sum=k=0
                for j in range(len(species_island)):
                    if(species_island[j]==S_I[i] and xx[j]!=''):
                        sum+=xx[j]
                        k+=1
                avg=sum/k
                xx_avg.append(float('%.3f' % avg))
    
        # 计算喙长平均值 单位mm
        bill_length_avg=[]
        GetAvg(bill_length,bill_length_avg)
    
        # 计算喙深平均值 单位mm
        bill_depth_avg=[]
        GetAvg(bill_depth,bill_depth_avg)
    
        # 计算脚蹼长度平均值 单位mm
        flipper_length_avg = []
        GetAvg(flipper_length,flipper_length_avg)
    
        # 计算体重平均值 单位g
        body_mass_avg=[]
        GetAvg(body_mass,body_mass_avg)
    
        Show(S_I, bill_length_avg,'bill_length_avg(mm)')
        Show(S_I, bill_depth_avg,'bill_depth_avg(mm)')
        Show(S_I, flipper_length_avg,'flipper_length_avg(mm)')
        Show(S_I, body_mass_avg,'body_mass_avg(g)')
    
    def Show(left,height,y):
        print("**************************开始绘图**************************")
        plt.xlabel('species_island_sex') #设置横坐标
        plt.ylabel(y) #设置纵坐标
        plt.bar(left, height)
        # 在直方图中各柱的头上标注其值
        for a, b in zip(left, height):
            plt.text(a, b + 1, b, ha='center', va='bottom')
        plt.show()
    
    if __name__ == '__main__':
        main()
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 距为300编制频数表,计算频数,频率和累积频率表,并绘制直方图 某厂对50个计件工人某月份工资进行登记,获得以下原始资料(单位:元) 试按距为300编制频数表,计算频数,频率和累积频率表,并绘制直方图。...

    按组距为300编制频数表,计算频数,频率和累积频率表,并绘制直方图

    某厂对50个计件工人某月份工资进行登记,获得以下原始资料(单位:元)
    试按组距为300编制频数表,计算频数,频率和累积频率表,并绘制直方图。要求写出用R语言进行基本统计的程序(数据可以从mvexec4.xls中获得)。

    (1)获取数据的变量名和数据的长度如何求频数

    大写x是excel中研究数据的变量名,一定要绑定数据attach();
    结束后释放数据detach();
    
    > attach(mvexec4)
    >  > names(mvexec4)
    [1] "X"
    > length(X)
    [1] 50
    >	hist(X,breaks = seq(0,3000,by=300),col = 1:7)
    

    在这里插入图片描述

    breaks = seq(0,3000,by=300)是设置一个区间范围

    求频率

    m<- seq(0,3000,by=300)
    hist(X,m,freq = F,col = 1:7)
    

    #freq = F就是求频率,freq = T就是求频数(hist(X,m,freq = T,col = 1:7))

    在这里插入图片描述
    求累积频率

    > cumsum(X)    #求累积
     [1]  1465  3225  5210  7480 10460 11835 13570 15510 17730 20400 21805 23560
    [13] 25525 27765 30585 31880 33525 35405 37515 40065 41420 43130 45040 47230
    [25] 49830 51095 52720 54585 56680 59200 60425 62030 63875 65915 68345 69520
    [37] 71115 72950 74980 77350 78350 79885 81695 83705 85995 87120 88695 90510
    [49] 92540 94860
    > M <- seq(0,96000,by=3000)
    > hist(Cumsum,M,freq = F,col = 1:12,las=3)
    

    在这里插入图片描述

    展开全文
  • 技巧108 直方图和正态分布图 技巧109 控制图 技巧110 概率纸图 技巧111 人口金字塔图 技巧112 滚动对比图 技巧113 目标达成图 技巧114 积分线图 技巧115 量本利分析图 技巧116 双塔图 技巧117 云梯图 技巧118 纺锤图...
  • 直方图 • 排列图 • 控制图 • 动态对比图 • 动态股票图 • XY散点折线图的内插值计算 • 自选图形种类 • 插入自选图形 • 添加文本 • 自选图形绘制线条和连接符 • 旋转和翻转 • 对齐和分布 • 自动靠齐 •...
  • 23、创建文本直方图 38 24、计算单元格中的总字数 38 25、关于欧元的转换 39 26、给表格做个超级搜索引擎 39 27、Excel工作表大纲的建立 39 28、插入“图示” 40 29、熟悉Excel的“从文本到语音” 40 30、Excel中...
  • 中文版Excel.2007图表宝典 1/2

    热门讨论 2012-04-06 18:49:24
    10.4.3 使用可调整的Bin创建直方图/276 10.5 绘制正态曲线/277 10.6 用标准偏差绘制Z-Score模型/278 10.7 计算曲线下方的面积/279 10.8 创建箱线图/281 10.9 绘制数学函数/283 10.9.1 绘制带一个变量的函数/283 ...
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    10.4.3 使用可调整的Bin创建直方图/276 10.5 绘制正态曲线/277 10.6 用标准偏差绘制Z-Score模型/278 10.7 计算曲线下方的面积/279 10.8 创建箱线图/281 10.9 绘制数学函数/283 10.9.1 绘制带一个变量的函数/283 ...
  • 本书在对Excel技术论坛上上百万个提问的分析与提炼的基础上,汇集了用户在使用Excel进行数据处理与分析过程中最常见的需求,通过270个实例的演示与讲解,将Excel高手的过人技巧手把手教给读者,并帮助读者发挥...
  • │ │ 技巧119 在Excel中定时打印.xls │ │ │ ├─第2章-工具栏和菜单 │ │ 技巧12 自定义菜单和工具栏.xls │ │ │ ├─第3章-操作工作簿 │ │ │ 技巧22 简繁转换不求人.xls │ │ │ 技巧24 为工作...
  •  14.4 使用直方图定位最适合价格 274  第15章 企业固定资产数据统计与分析 276  15.1 固定资产参数设置 276  15.2 固定资产清单 278  15.2.1 创建固定资产清单 278  15.2.2 计算固定资产折旧 281  15.3 制作...
  • 任务230: 实例上手直方图 任务231: 实例上手甘特图 任务232: 实例上手盒须图 任务233: 实例上手填充气泡图 第20章: Tableau高级篇(地图、仪表盘、故事) 任务234: 综述 任务235: 设置地理角色 任务236: ...
  • 7.15 资源曲线的直方图绘制功能完善,之前与曲线图相同。修订了任务自动分配资源出图的问题。 多谢群友【老人头】反馈 7.12 修订双代号网络图个别情况下存在箭头指向结束节点编号大于开始节点编号的问题 多谢群友...
  • 数据处理工具记录【一】使用工具数据读取读取csv文件读取excel文件数据浏览显示信息划分测试集可视化频数直方图散点图带透明度的散点图带热力图与大小的散点图寻找相关性皮尔逊相关系数矩阵指标散点图数据组合数据...

    使用工具

    jupyter notebook
    pandas、sklearn
    (matplotlib和numpy、scipy就不说了)
    以上都可pip安装

    注:

    1. 本人使用的sklearn版本是0.18
    2. jupyter notebook 安装前先升级pip,再输入pip install jupyter
    3. jupyter使用时先定位到项目文件夹。使用教程可参考博客: https://blog.csdn.net/gubenpeiyuan/article/details/79252402
    4. 图片样例来源于:机器学习实战:基于Scikit-Learn和TensorFlow

    数据读取

    读取csv文件

    import pandas as pd
    data = pd.read_csv(path)
    

    读取excel文件

    # 读取第一个sheet
    data = pd.read_excel(path)  
    
    # 读取第二个sheet
    data = pd.read_excel(path, sheet_name=1)  
    
     # 读取所有的sheet,以字典的形式保存,key为sheet名
    data = pd.read_excel(path, sheet_name=-1)  
    

    返回DataFrame类。
    其他参数可以参考博客:
    https://blog.csdn.net/weixin_38546295/article/details/83537558

    数据浏览

    显示信息

    data.head()  # 显示前5行数据
    

    在这里插入图片描述

    data.info()  # 显示一些信息,可以看出哪列有缺失,数据格式等
    

    在这里插入图片描述

    data["key"].value_counts()  # 显示该列的分类统计信息
    

    在这里插入图片描述

    data.describe()  # 显示统计相关信息,包含计数、均值、标准差、最大最小值、四分位数
    

    在这里插入图片描述

    划分测试集

    from sklearn.model_selection import train_test_split
    train_set, test_set = train_test_split(data, test_size=0.2, random_state=42)
    

    可视化

    频数直方图

    %matplotlib inline
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    data.hist(bins=50, figsize=(20,15))  # 绘制频数直方图,bin是矩阵数
    

    在这里插入图片描述
    关于DataFrame.hist()更多参数说明,可参考官网:
    https://pandas.pydata.org/pandas-docs/version/0.19/generated/pandas.DataFrame.hist.html
    如果打开较慢或打不开,可参考博客:
    https://blog.csdn.net/yanwucao/article/details/79841544

    散点图

    data.plot(kind="scatter", x=key1, y=key2)
    

    在这里插入图片描述

    带透明度的散点图

    加上透明度,可以更有效的显示聚集情况

    data.plot(kind="scatter", x=key1, y=key2,alpha=0.1)
    

    在这里插入图片描述

    带热力图与大小的散点图

    data.plot(kind="scatter", x="longitude", y="latitude", alpha=0.4,
                 s=housing["population"]/100, label="population", 
                 c="median_house_value", cmap=plt.get_cmap("jet"), colorbar=True)
    

    在这里插入图片描述

    保存图片

    def save_fig(path, tight_layout=True):
        print("Saving figure", fig_id)
        if tight_layout:
            plt.tight_layout()
        plt.savefig(path, format='png', dpi=300)
    

    寻找相关性

    皮尔逊相关系数矩阵

    corr_matrix = data.corr()
    corr_matrix[key].sort_values(ascending=False)
    

    在这里插入图片描述

    多指标散点图

    不同指标位置为对应的散点,对角线相同指标位置为频数直方图。
    从这样的图里面可以看到相关性

    from pandas.plotting import scatter_matrix
    attributes = ["key1", "key2", "key3", "key4"]
    scatter_matrix(data[attributes], figsize=(12, 8))
    

    在这里插入图片描述
    在这里插入图片描述

    数据组合

    data[new_key] = data[key1] / data[key2]
    

    数据清洗

    一般方法

    一般有以下三种方法,再DataFrame中都有方法可调用

    1. 放弃这一条数据,对应dropna()方法
    2. 放弃这一条属性,对应drop()方法
    3. 填补缺失值(0,中位数,平均数),对应fillna()方法
    data.dropna(subset=[key1,key2])
    data.drop(key, axis=1)
    median = data[key].median()
    data[key].fillna(median)
    

    sklearn中有更好的估算器和转换器完成第三种方法

    from sklearn.preprocessing import Imputer
    imputer = Imputer(strategy="median")
    imputer.fit(data)  # 估算器,一般用来拟合,估算参数
    data = imputer.transform(data)  # 转换器,根据估算器更新数据集
    
    # 此时data的属性时numpy.ndarray数组,最好还是转换成pandas的DataFrame
    data = pd.DataFrame(data)
    

    也可以自定义转换器,需要重构fit()和transform()方法。

    class DataFrameSelector(BaseEstimator,TransformerMixin):
        def __init__(self,attribute_names): #可以为列表
            self.attribute_names = attribute_names
        def fit(self,X,y=None):
            return self
        def transform(self,X):
            return X[self.attribute_names].values #返回的为numpy array
    

    特征放缩

    from sklearn.preprocessing import StandardScaler  # 标准化(减去均值再除以标准差)
    from sklearn.preprocessing import MinMaxScaler  # 归一化(0~1)
    

    流水线

    将上述步骤合在一起,安装一定顺序执行,调用优化过的fit_transform()方法。

    from sklearn.pipeline import Pipeline
    num_pipeline = Pipeline([('imputer', Imputer(strategy="median")),   # 估算器
                            ('attribs_adder', CombinedAttributesAdder()),   # 转换器
                            ('std_scaler', StandardScaler())   #特征缩放
                            ])
    housing_num_tr = num_pipeline.fit_transform(housing_num)
    

    流水线也可以组合

    from sklearn.pipeline import FeatureUnion
    
    num_attribs = list(data)
    cat_attribs = ["ocean_proximity"]
    
    num_pipeline = Pipeline([
        ('selector', DataFrameSelector(num_attribs)),
        ('imputer', Imputer(strategy="median")),
        ('attribs_adder', CombinedAttributesAdder()),   # 自定义的数据组合转换器
        ('std_scaler', StandardScaler()),
    ])
    
    cat_pipeline = Pipeline([
        ('selector', DataFrameSelector(cat_attribs)),
        ('label_binarizer', LabelBinarizer()),  # 文本转换器,给字符编码
    ])
    
    full_pipeline = FeatureUnion(transformer_list=[
        ("num_pipeline", num_pipeline),
        ("cat_pipeline", cat_pipeline),
    ])
    data = full_pipeline.fit_transform(data)
    
    展开全文
  • 第一种方法容易理解、简单,但是必须要多次打开Excel才能完成选择不同阈值得到多组敏感度和特异度的目的;第二种方法应用MATLAB软件编写程序,程序短小、简单,易使用,而且可随意设置修改阈值,得到相应的敏感度和...
  • - 可以通过鼠标拖动来移动定义的 ROI - 均值和标准差参数始终显示在所有线图中- 可以保存直方图的设置(线图、点图、ROI 的定义)以供以后处理- 统计结果(平均值、标准差)可以直接保存到 Excel 工作表中,包
  • 6.5.1 使用比较直方图分析公司的借贷情况 6.5.2 强调数值比重的条形图 6.6 倾向分析--雷达图实例 6.7 混合图表 6.7.1 体现增长情况的混合图表 6.7.2 绘制比较形式的堆积柱形图 6.7.3 应用立方体和人员图像突出营业额...
  • 实例275 绘制3D垂直直方图 实例276 生成垂直堆栈图 实例277 生成区域图 10.2 绘制饼状图表 实例278 生成普通饼图 实例279 生成3D饼图 10.3 绘制基于XYDataset数据集的图表 实例280 生成线段图(折线图) 实例281 ...

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

excel多组直方图