EDA数据探索性分析_不才~的博客-程序员宅基地

技术标签: python  数据分析  

读取数据,输出每个有效变量的数据分布图:

import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


class EDA:
#    def __init__(self,file_path):
#        self.file_path=file_path
    #获得数据
    def get_data(file_path):
        file_type = file_path.split('.')[1]
        if file_type=='txt':
            df=pd.read_table(file_path)
        elif file_type=='csv':
            df=pd.read_csv(file_path)
        elif file_type == 'xls' or file_type == 'xlsx':
            df = pd.read_excel(file_path)
        return df
    #获取每列数据类型
    def get_col_type(df):
#        df=get_data(file_path)
        label_col=list(set(df.columns)-set(df.describe().columns))
        other_col=list(set(df.columns)-set(label_col))
        num_col=[]
        for col in other_col:
            if len(set(df[col]))<10:
                label_col.append(col)
            else:
                num_col.append(col)
        return label_col,num_col
    #绘图看数据分布
    def eda_plot(df,label_col,num_col):
        df_count = df.shape[0]
        df_col=df.columns.tolist()
        k = 0
        for col in df_col:
            #对数值型数据进行直方图,箱线图,小提琴图
            if col in num_col:
                if math.floor(len(set(df[col]))*100/df_count)<50:
                    df = df[(df[col].notnull())].sort_values(col, ascending=True).reset_index(drop=True)
                    k = k + 1
                    plt.figure(k)
                    plt.subplot(1,3,1)
                    plt.hist(df[col])
                    plt.subplot(1,3,2)
                    plt.boxplot(df[col])
                    plt.gca().set_title('  %s  分布' %col)
                    plt.subplot(1,3,3)
                    plt.violinplot(df[col])
                    plt.tight_layout()
                
                
            elif col in label_col:
                #类别型数据画柱形图和饼图
                if math.floor(len(set(df[col]))*100/df_count)<5:
                    #k=k+1
                    #df_0=pd.DataFrame(df[col].index.values.tolist(),columns=[col])
                    df_0= df.groupby([col]).agg({
    col:['count']})
                    df_1=df_0.iloc[:,0].tolist()
                    #df_0['count'] = df.groupby([col]).agg({col:['count']})
                    x_axle = range(len(set(df[col].dropna())))
                    y_axle = df_1
                    x_label = list(set(df[col].dropna()))
                    fig, (ax1, ax2) = plt.subplots(2)
                    ax1.bar(x_axle,y_axle)
                    ax1.set_xticks(x_axle)
                    ax1.set_xticklabels(x_label)
                    ax1.set_title(' %s  分布' % (col))
                    ax2.pie(y_axle,labels=x_label, autopct='%1.2f%%')
        else:
            pass
        
if __name__=="__main__":
    df=EDA.get_data(r'C:\Users\Tiantic\train.csv')
    label_col,num_col=EDA.get_col_type(df)
    EDA.eda_plot(df,label_col,num_col)

输出结果:
在这里插入图片描述
在这里插入图片描述

在EDA类下定义了简单的数据处理包,但是没有把前两个进行实例化(做了没有成功),有好的方法可以留言交流哈

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45323012/article/details/104817002

智能推荐

在计算机检索中 有哪些方法能缩小,使用“或OR”运算将同义词连接起来可以缩小检索。()..._失落的哲人的博客-程序员宅基地

相关题目与解析减少使用连接同义词或相关词的“或OR”运算可以缩小检索范围。()机检时,缩小检索结果的方式有()。A用OR连接检索词B用同义词检索C用AND连接检索词D使用扩展检索缩小检索范围的检索策略调整方法有()。A.减少同义词或同族相关词B.增加同义词或同族相关词,使用逻辑“使用“或OR”运算将同义词连接起来可以扩大检索范围。()减少使用连接同义词或相关词的“或OR”运算可以扩大检索范围。()..._在机检中, 缩小检索范围的方式有

你还在学Java?学python才是有道!图解更详细_weixin_34268579的博客-程序员宅基地

java 和 Python 一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学 Java 还是 Python,是不是 Python 容易学,或是应该先学什么编程语言等等这样的问题。作为一名 Java 程序员,肯定会建议你先学 Java,然后再学 Python,但如果你问一个 Python 程序员,可能会得..._有道学python

oracle中将表字段修改为大写_oracle 更新表字段转大写_JonyLei的博客-程序员宅基地

beginfor c in (select COLUMN_NAME cn from all_tab_columns where table_name='MIGU_UE_MODEL_MONTH') loopbeginexecute immediate 'alter table MIGU_UE_MODEL_MONTH rename column "'||c.cn||'" to '||c.cn;..._oracle 更新表字段转大写

说说系统分析师考试(从考试介绍到考试心得)_GarfieldEr007的博客-程序员宅基地

软考,2004软考改革,职称以考代评系统分析师考试,就是参加软考。软考——中国计算机技术与软件专业技术资格考试,是国家级的IT专业技术人员从业资格考试。2003年底,人事部和信息产业部联合发布了国人部发[2003]39号文件,以软考为基础,对IT领域职称评定进行全面改革,使得已有逾十年历史的软考具有更诱人的内涵:以考代评全面实现,考过即可得职称  国人部发[2003

Java实现 蓝桥杯VIP 算法提高 最小乘积(提高型)_试题 算法提高 最小乘积(提高型) java_普通网友的博客-程序员宅基地

算法提高 最小乘积(提高型)时间限制:1.0s 内存限制:512.0MB问题描述  给两组数,各n个。  请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。  例如两组数分别为:1 3  -5和-2 4 1那么对应乘积取和的最小值应为:  (-5) * 4 + 3 * (-2) + 1 * 1 = -25输入格式  第一个行一..._试题 算法提高 最小乘积(提高型) java

随便推点

qml之从零开始编写网易云音乐(三)_卑微的小李的博客-程序员宅基地

播放控制栏界面编写,预览:控制栏主体:Rectangle{ width: parent.width height: 54*dp color: "#ffffff" Rectangle{ id:border__ anchors.top: parent.top width: parent.width heig...

java.lang.NegativeArraySizeException_swandragon的博客-程序员宅基地

用smartuploat上传文件时报错:java.lang.NegativeArraySizeException此错误一般是因为form写法有错误method要为post并且加上ENCTYPE="multipart/form-data"

【OpenCV】29 快速的图像边缘滤波算法_cv::recurs_filter_肉食动物刘小胖的博客-程序员宅基地

29代码实验结果解释优点所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。..._cv::recurs_filter

Google Geocoding API---地理编码与反向地理编码_google地图 正反向地理定位api_yyingwei的博客-程序员宅基地

什么是地理编码地理编码是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,您可以根据该地理坐标放置标记或定位地图。Google Geocoding API 可让您通过 HTTP 请求直接访问地理编码器。此外,该服务还可让您执行反向操作(将坐标转换为地址)_google地图 正反向地理定位api

皮尔森残差_遗传平衡定律(又称Hardy Weinberg定律)与卡方检验_贾华京的博客-程序员宅基地

一、Hardy Weinberg定律在全基因组关联分析的文章中,我们经常会看到作者对待研究的基因位点是否符合遗传平衡定律(又称Hardy Weinberg定律)进行检验。那么为什么要这么做呢?具体的方法和原理又是什么?遗传平衡定律(又称Hardy Weinberg定律)。意即一个群体符合这种状况,即达到了遗传平衡,也就是一对等位基因的3种基因型的比例分布符合公式:p2+2pq+q2=1,p+q=1..._pearson残差

深度解读抖音平台规则与机制_抖音流量机制和运营规则_八鲸诚的博客-程序员宅基地

常言道,工欲善其事,必先利其器。只有深度了解一件事物的规则机制,才能更好的运用它。字节跳动旗下的抖音作为短视频中的领军平台,我们今天带领大家从多个角度来深度解读抖音平台的规则和机制。一、了解抖音特性1.去中心化算法去中心化的基本概念:在一个分布有众多节点的系统中,每个节点都具有高度自治的特征。节点之间彼此可以自由连接,形成新的连接单元。任何一个节点都可能成为阶段性的中心,但不具备强制性的中心控制功能。节点与节点之间的影响,会通过网络而形成非线性因果关系。这种开放式、扁平化、平等性的系统现象或_抖音流量机制和运营规则

推荐文章

热门文章

相关标签