python、execl数据分析(数据描述)

 一 python

1.各函数

1.1python库的安装与导入

    #pip install os
    #pip install matplotlib
    #pip install seaborn
    #pip install scikit-learn
    #pip install scipy

    #修 改 工 作 目 录
    import os
    os.getcwd ()  # 查看当前工作环境
    os.chdir( 'F :\my course\database ')  # 修改工作环境
    os.getcwd ()

    #模 块 价 值
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns #统 计 绘 图
    from sklearn.preprocessing import StandardScaler
    from scipy.stats import norm
    from scipy import stats #统 计
    from sklearn.impute import Simple Imputer #导 入 模 块

1.2python读入和检查数据

   # 读 入 分 析 数 据
2    df= pd.read_csv("customer1997 .csv")
3
4    # 检 查 数 据、 行 数、 列 数、 列 属 性 和 类 型
5    df.shape    # 行 数 和 列 出
6    df.info ()   # 每 个 属 性 的 行 数 和 类 型
7    df.columns  # 属 性 列 名 称
8    # 查 看 数 据 集 前5 行
9    df.head (5)

1.3数据属性的描述性分析

1    # 分 别 查 看RFM 的 描 述 统 计 量
2    # 方 法1 使 用describe() 输 出 数 值 属 性 的 行 数、 均 值、 标 准 差、 最 小 值、 Q1 ,Q2 ,Q3 ,最 大 值 3    df.describe ()
4    # 方 法2 使 用describe() 输 出 数 值 属 性 的 行 数、 均 值、 标 准 差、 最 小 值、 Q1 ,Q2 ,Q3 ,最 大 值 5    df[ 'Rec en cy '].describe ()   # 注 意 大 小 写 是 敏 感 的
6    # 方 法3 使 用 函 数 对 某 列 进 行 描 述 统 计
7    print( '对 客 户 的 到 店 次 数 进 行 描 述 统 计 ')
8    print( '最 小 值 是 ' , df[ 'Frequency '].min ())
9    print( '均 值 是 ' , df[ 'Frequency '].mean ())
10    print( ' 中 位 数 是 ' , df[ 'Frequency '].median ())
11    print( '第25 百 分 位 数 ' , df[ 'Frequency '].quantile(q=0.25))
12    print( '第75 百 分 位 数 ' , df[ 'Frequency '].quantile(q=0.75))
13    print( '最 大 值 是 ' , df[ 'Frequency '].max ())
14    print( '极 差 是 ' , df[ 'Frequency '].max ()-df[ 'Frequency '].min ())
15    print( '方 差 和 标 准 差 ' , df[ 'Frequency '].var(),df[ 'Frequency '].std())
16    print( '变 异 系 数 ' , df[ 'Frequency '].std()/df[ 'Frequency '].mean ())
17    print( '偏 度 和 峰 度 ' , df[ 'Frequency '].skew (),df[ 'Frequency '].kurt os is ())
18
19    # 数 值 型 属 性 统 计 分 布 图
20    # 绘 制 分 布 图 确 保 import seaborn as sns 被 执 行
21    df[ 'Monetary ']
22    sns.distplot(df[ 'Monetary '])
23    # 绘 制 盒 型 图
24    sns.boxplot(df[ 'Monetary '])
25    # 绘 制 核 密 度 图
26    sns.kdeplot(df[ 'Monetary '], shade=True , bw=.5, color="olive")

1.4分类属性的描述性分析

1    # 分 类 数 据 的 频 数 统 计
2    # 按 会 员 卡 等 级 统 计 人 数、 RFM 的 均 值、 描 述 统 计 量
3    # 设 置 数 据 对 象 的 分 组 属性 ,并 创 建 新 的 数 据 对 象
4    member card_summary=df.groupby( 'member_card ')
5    member card_summary [ 'customer_id '].count ()
6    member card_summary [ 'Rec en cy '].mean ()
7    member card_summary .mean ()
8    member card_summary [ 'Frequency '].describe ()
9    member card_summary [ 'Monetary '].describe ()

1.5两个分类属性的交叉统计分析

1    # 两 个 个 分 类 属 性 的 交 叉 统 计 分 析
2    # 按 会 员 卡 和 性 别 的 输 出 交 叉 表
3    pd.crosstab(df[ 'member_card '], df[ 'gender '])
4    #对 交 叉 结 果 进 行 归 一 化
5    pd.crosstab(df[ 'member_card '], df[ 'gender '],normalize=True)
6    #在 最 右 边 增 加 一 个 汇 总 列
7    pd.crosstab(df[ 'member_card '], df[ 'gender '],normalize=True ,margins=True)
8    # 对 每 列 进 行 归 一 化
9    pd.crosstab(df[ 'member_card '], df[ 'gender '],normalize= 'columns ')
10    # 绘 制 频 数 图/条 形 图
11    # 对 比 每 个 会 员 等 级 的 不 同 性 别 的 客 户 数 量
12    sns.countplot(y="member_card" ,hue= 'gender ' ,data=df)
13    # 两 个 分 类 属 性 增 加1个 数 值 属 性 的 盒 形 图
14    sns.boxplot(x="member_card" ,y="Frequency" ,hue="gender" ,data=df)

1.6两个数值属性的相关分析

    # 两 个 数 值 属 性
2    # 绘 制 相 关 矩 阵 和 热 力 图
3    # 输 出 数 值 型 属 性 的 两 两 相 关 系 数 表
4    df.corr ()
5    #绘 制 热 力 图
6    corr=df.corr ()
7    corr=(corr)
8    sns.heatmap(corr , xticklabels=corr.columns.values , yticklabels=corr.columns.values) 9    #绘 制2个 变 量 散 点 图 (scatterplot)
10    sns.scatterplot(x="Frequency" , y="Monetary" , data=df)
11    #绘 制 带 回 归 线 的 散 点 图 (lmplot)
12    sns.lmplot(x="Frequency" , y="Monetary" , data=df)
13    #在 散 点 图 上 增 加 一 个 分 类 属 性
14    sns.lmplot(x="Frequency" , y="Monetary" ,hue="gender" , data=df)
15    # 集 群 散 点 图(swarmplot)
16    sns.swarmplot(x=df[ 'gender '], y=df[ 'Monetary '])
17    sns.swarmplot(x=df[ 'gender '], y=df[ 'Frequency '])
18
19
20    #简 单 散 点 图  的 绘 图 语 法: sns .scatterplot( x=X对 应 变量 , y=Y对 应 变 量)
21    #分 组 散 点 图  的 绘 图 语 法: sns .scatterplot( x=X对 应 变量 , y=Y对 应 变量 , hue=分 组 依 据 的 类 别 变 量) 22    # 带 回 归 线 的 散 点 图  的 绘 图 语 法: sns .regplot( x=X对 应 变量 , y=Y对 应 变 量)
23    # 带 回 归 线 的 分 组 散 点 图  的 绘 图 语 法: sns .lmplot(x=X变 量 列名 , y=Y变 量 列名 , hue=分 组 依 据 的 类 别 变 量 列 名 , data=数 据 表)
24    #集 群 散 点 图(swarmplot) 的 绘 图 语 法: sns .swarmplot( x=X对 应 的 类 别 变量 , y=Y对 应 变 量)

1.7分类属性和数值属性的方差分析

1    # 1个 分 类 属 性 和1个 数 值 属 性
2    # 绘 制 盒 型 图
3    sns.boxplot(x=df[ 'member_card '],y=df[ 'Monetary '],data=df)
4    sns.boxplot(x=df[ 'gender '],y=df[ 'Monetary '],data=df)
5    # 单 因 素 方 差 分 析: 比 较 均 值 的 差 异 性
6    from scipy import stats
7    from statsmodels.formula.api import ol s
8    from statsmodels.stats.anova import anova_lm
9    from statsmodels.stats.multi comp import pairwise_tukeyhsd
10
11    df2=pd.con cat ([df[ 'gender '],df[ 'Monetary ']],axis=1)
12    anova_monetary= anova_lm(ol s( 'Monetary~C (gender) ' ,data=df2[[ 'gender ' , 'Monetary ']]).fit()) 13   print(anova_monetary)
14    ## 在0.05 的 显 著 水 平 下, 不 同 性 别 客 户 的 消 费 金 额 是 有 差 异 的
15    # 绘 制 不 同 组 的 核 密 度 图
16    # 使 用loc()取 出 不 同 组 的 数 据
17    p1=sns.kdeplot(df.loc[(df[ 'gender ']== 'M '), 'Rec en cy '], shade=True , color="r" ,label= 'M ') 18    p2=sns.kdeplot(df.loc[(df[ 'gender ']== 'F '), 'Rec en cy '], shade=True , color="b" ,label= 'F ') 19    plt.show ()
20    ##绘 制 叠 加 图 时 多 行 一 起 执 行

 1.8时间序列数据

1    # 带 有 时 间 属 性
2    # 读 入 分 析 数 据
3    import numpy a s np
4    import pandas a s pd
5    from datetime import datetime
6    import matplotlib.pylab a s plt
7    # 读 取 数 据, pd .read_csv 默 认 生 成DataFrame对 象, 需 将 其 转 换 成Series对 象
8    df = pd.read_csv( 'daily sales1997 .csv ' , encoding= 'utf-8 ' , index_col= 'date ')
9    df.info ()
10    df.index
11    df.index = pd.to_datetime(df.index)  # 将 字 符 串 索 引 转 换 成 时 间 索 引
12    ts = df[ 'sales ']  # 生 成pd .Series对 象
13    # 查 看 数 据 格 式
14    ts.head ()
15    ts.head ().index
16    #查 看 某 日 的 值 既 可 以 使 用 字 符 串 作 为 索 引, 又 可 以 直 接 使 用 时 间 对 象 作 为 索 引
17    ts[ '1997-01-05 ']
18    ts[datetime (1997 ,10 ,1)]
19    #切 片 操 作
20    ts[ '1997-5 ' : '1997-6 ']
21    #绘 制 时 间 序 列 图
22    ts.plot(fig size=(12 ,8))

2.例子

(1)

hotel.csv

def hotel_data():
    df = pd.read_csv('hotel.csv')
    # print(df)
    return df


def get_shape():  # 获取行列值
    shape = hotel_data().shape
    print(shape)


def get_info():
    info = hotel_data().info
    print(info)


def get_column():
    column = hotel_data().columns
    print(column)


def get_describe():  # 描述数据:数量,均值,最小值,最大值,25%,50%,75%
    describe = hotel_data().describe()
    print(describe)


def get_box():  # 盒型图
    data = hotel_data()
    sns.boxplot(data)
    # sns.boxplot(data['nocheckin'], vert=False, showfliers=True)
    plt.show()


def get_dis():  # 柱形图
    data = hotel_data()
    sns.displot(data)
    plt.show()


def get_kdef():  # 分布图
    data = hotel_data()
    # sns.kdeplot(data, shade=True, bw=.5, color="olive")
    sns.kdeplot(data, fill=True, bw_method=.5, color="olive")
    plt.show()
hotel_data()结果:

get_describe()结果:

get_column()结果:

 

get_box()结果:

get_dis()结果:

get_kdef()结果:

(2)

 customer1997.csv

def get_summary():  # 分组频数统计
    data = customer_data()
    member_summary = data.groupby('member_card')
    data1 = data.groupby('member_card').count()
    print(data1)
    data2 = member_summary['customer_id'].count()  # 单个变量 每类会员卡人数
    print(data2)
    data3 = member_summary['Monetary'].mean()  # 双变量 会员卡 消费金额 每类会员卡平均
    print(data3)
    data4 = member_summary['Monetary'].describe()
    print(data4)

 结果

二 execl

1.调出“数据分析”按钮

文件--选项--加载项--转到--分析工具库

 

查看

 2.数据分析使用

选中数据,点击“数据分析”,选中“描述分析”

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark基于DPU Snappy压缩算法的异构加速方案

一、总体介绍 1.1 背景介绍 Apache Spark是专为大规模数据计算而设计的快速通用的计算引擎,是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越。换句话说&am…

高效物联网连接技术创新:ECWAN边缘协同自组网的未来——基于ChirpLAN窄带扩频技术的无线混合组网

物联网是指将各种物理设备通过互联网进行连接和通信的技术。它是一个庞大的网络,由传感器、设备、网络和云服务组成,旨在实现对物体的远程监测、控制和数据采集。 基于ChirpLAN窄带扩频技术的无线混合组网协议ChirpLAN,ChirpLAN是基于其自有的…

将 SOC 集成到应用程序安全中以增强网络弹性

从历史上看,安全运营中心 (SOC) 和应用程序安全 (AppSec) 计划在组织的更广泛的网络安全框架内作为不同的实体运行。SOC 一直是实时威胁检测、分析和响应、监控网络恶意活动迹象以及管理事件响应以减轻潜在损害的据点。 相反,AppSec 专注于网络安全的预…

JavaWeb——过滤器

Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别…

学会Sass的高级用法,减少样式冗余

在当今的前端开发领域,样式表语言的进步已经显著提升了代码组织性和可维护性。Sass(Syntactically Awesome Style Sheets)作为CSS预处理器的翘楚,以其强大的变量、嵌套规则、混合宏(mixin)、循环和函数等高…

【Canvas与艺术】淡蓝辉光汽车速度仪表盘

【关键点】 内圈处渐变色的采用。 【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>淡蓝辉光汽车速度仪表盘</t…

Windows11 安装VitrulBox Ubuntu20 虚拟机启动后卡在“Freeing initrd memory: 131304K”

步骤&#xff1a;点击启动Ubuntu后&#xff0c;一直起不来&#xff1f;没办法正常关机&#xff0c;选择重启又一直卡在这里&#xff0c;原来是同样的错误 Freeing initrd memory: 131304K 原因&#xff1a;本机联想小新14Pro&#xff0c;AMD 7840HS&#xff0c;锐龙版。而Ryze…

基于TensorFlow的花卉识别(算能杯)%%%

Anaconda Prompt 激活 TensorFlow CPU版本 conda activate tensorflow_cpu //配合PyCharm环境 直接使用TensorFlow1.数据分析 此次设计的主题为花卉识别&#xff0c;数据为TensorFlow的官方数据集flower_photos&#xff0c;包括5种花卉&#xff08;雏菊、蒲公英、玫瑰、向日葵…

设计模式之单例模式精讲

UML图&#xff1a; 静态私有变量&#xff08;即常量&#xff09;保存单例对象&#xff0c;防止使用过程中重新赋值&#xff0c;破坏单例。私有化构造方法&#xff0c;防止外部创建新的对象&#xff0c;破坏单例。静态公共getInstance方法&#xff0c;作为唯一获取单例对象的入口…

后端常问面经之Redis

Redis基础 常见的读写策略有哪些&#xff08;保证缓存和数据库数据的一致性&#xff09; Cache Aside Pattern&#xff08;旁路缓存模式&#xff09; Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式&#xff0c;比较适合读请求比较多的场景。 Cache Aside Pat…

Linux内核err.h文件分析

在阅读和编写内核相关的代码时&#xff0c;经常会看到IS_ERR、ERR_PTR等函数。这些函数在内核头文件的err.h中。以我服务器的代码为例&#xff0c;内核版本为5.15。 这个文件的代码如下&#xff1a; /* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_ERR_H #define _L…

Ubuntu deb文件 安装 MySQL

更新系统软件依赖 sudo apt update && sudo apt upgrade下载安装包 输入命令查看Ubuntu系统版本 lsb_release -a2. 网站下载对应版本的安装包 下载地址. 解压安装 mkdir /home/mysqlcd /home/mysqltar -xvf mysql-server_8.0.36-1ubuntu20.04_amd64.deb-bundle.tar# …

阿里 Modelscope 创空间部署在本地环境操作文档

创建创空间的步骤直接跳过。 备注:我的电脑是Windows 第一步&#xff1a;获取创空间代码&#xff0c;直接下载代码太慢了&#xff0c;建议通过git获取代码 第二步:复制链接,打开cmd 直接粘贴回车下载。下载完之后的到了我的Service-Assistant文件夹。再git clone https://gith…

Publish Over SSH实现Jenkins构建项目发布

1. 在Jenkins上安装Publish Over SSH插件 在“系统设置–插件管理–可选插件”界面搜索&#xff1a;SSH&#xff0c;然后选择 Publish Over SSH&#xff0c;点击安装&#xff0c;然后重启。 这里是已经安装过&#xff0c;所以在“已安装”界面里&#xff01; 2. 配置 Publis…

Linux系统下安装部署Linux管理面板1panel

目录 一 1panel介绍 1、1Panel简介 2、1Panel特点 二、本地环境规划 1、本此实验目的 2、本地环境部署 三、部署1Panel&#xff08;在线安装&#xff09; 1.创建安装目录 2.一键部署1Panel 3.检查1Panel服务运行状态 4.检查1Panel监听端口 四、关闭防火墙和selinux…

线程的状态:操作系统层面和JVM层面

在操作系统层面&#xff0c;线程有五种状态 初始状态&#xff1a;线程被创建&#xff0c;操作系统为其分配资源。 可运行状态(就绪状态)&#xff1a;线程被创建完成&#xff0c;进入就绪队列&#xff0c;参与CPU执行权的争夺。或因为一些原因&#xff0c;从阻塞状态唤醒的线程…

2024年购买阿里云服务器多少钱?1000元年预算配置报价

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

区块链创新:探索 Web3 的去中心化应用

引言 随着数字化时代的发展&#xff0c;区块链技术作为一种颠覆性的技术正在改变着我们的社会和经济生活。在这个背景下&#xff0c;Web3的概念应运而生&#xff0c;它代表了一种去中心化的互联网新时代&#xff0c;为去中心化应用&#xff08;DApps&#xff09;的发展提供了坚…

面试笔记——MyBatis(执行流程、延迟加载和缓存)

MyBatis 是一个持久层框架&#xff0c;用于简化 Java 应用程序与数据库之间的交互过程。具体而言&#xff0c;它提供了一种将数据库操作映射到 Java 方法的方式&#xff0c;通过 XML 文件或注解配置 SQL 语句与 Java 方法的映射关系。使用 MyBatis&#xff0c;开发人员可以通过…

Visual Studio QT6 工程引入组件模块,例如:QtXml

QT 工程引入 QtXml QT 版本 6.6.1 Visual Studio 版本 Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.7.5 打开 Visual Studio 项目工程选择 工具栏 - 扩展 - QT VS Tools -Qt Project Settings 勾选 xml 后点击确定 点击应用即可 注意&#xff1a;配置环…