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

 一 python

1.各函数

1.1python库的安装与导入

    #pip install os#pip install matplotlib#pip install seaborn#pip install scikit-learn#pip install scipy#修 改 工 作 目 录import osos.getcwd ()  # 查看当前工作环境os.chdir( 'F :\my course\database ')  # 修改工作环境os.getcwd ()#模 块 价 值import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as sns #统 计 绘 图from sklearn.preprocessing import StandardScalerfrom scipy.stats import normfrom 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 dfdef get_shape():  # 获取行列值shape = hotel_data().shapeprint(shape)def get_info():info = hotel_data().infoprint(info)def get_column():column = hotel_data().columnsprint(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.数据分析使用

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

结果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fifo ip核 ————读写时钟同步

1.原理 timescale 1ns/1ns module tb_fifo();reg sys_clk ; reg sys_rst_n ; reg [7:0] pi_data ; reg rd_req ; reg wr_req ; reg [2:0] cnt;wire empty ; wire full ; wire [7:0] po_data ; wire [7:0] usedw ;initial begins…

ThreadPoolExecutor @since 1.5 @author Doug Lea

ThreadPoolExecutor 类的设计思路和目的主要是为了提供一种高效、 灵活且可控的方式来管理和复用线程资源, 以便更好地处理并发任务。以下是源码中的注释说明: An ExecutorService that executes each submitted task using one of possibly several poo…

力扣HOT100 - 283. 移动零

解题思路: 双指针 指针 i 用于寻找不为零的位置 指针 j 用于寻找为零的位置 不为零时,自己与自己交换,i 和 j 同时向下一个位置移动 为零时,nums[ i ]与nums[ j ]交换,使零向后移动 class Solution {public void…

总结虚函数表机制——c++多态底层原理

前言: 前几天学了多态。 然后过去几天一直在测试多态的底层与机制。今天将多态的机制以及它的本质分享给受多态性质困扰的友友们。 本节内容只涉及多态的原理, 也就是那张虚表的规则,有点偏向底层。 本节不谈语法!不谈语法&#x…

Qt——智能指针实战

目录 前言正文一、理论介绍1、QPointer2、QScopedPoint3、QSharedPoint4、QWeakPoint 二、实战演练1、QPoint2、QScopedPoint3、QSharedPointa、示例一b、示例二 4、QWeakPoint END、总结的知识与问题 参考 前言 智能指针的使用,对很多程序员来说,都算是…

发布文章积分自动增加

controller ApiOperation(value "添加文章")PostMapping("/addwengzhang")public String addwengzhang(RequestBody WengDto wengDto) {if (wengDto.getContent() null || wengDto.getTitle() null) {return "参数不可为空";}User user user…

【MySQL】InnoDB引擎

逻辑结构 InnoDB存储引擎逻辑结构如图所示: Tablespace:表空间,一个数据库可以对应多个表空间。数据库中的每张表都有一个表空间,用来存放表记录、索引等数据。 Segment:段,表空间中有多个段&#xff0c…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-乘积尾零

solution 找末尾0的个数&#xff0c;即找有多少对2和5 >问题等价于寻找所给数据中&#xff0c;有多少个2和5的因子&#xff0c;较少出现的因子次数即为0的个数 #include <iostream> using namespace std; int main() {// 请在此输入您的代码printf("31");…

Java代码基础算法练习-搬砖问题-2024.03.25

任务描述&#xff1a; m块砖&#xff0c;n人搬&#xff0c;男搬4&#xff0c;女搬3&#xff0c;两个小孩抬一砖&#xff0c;要求一次全搬完&#xff0c;问男、 女、小孩各若干&#xff1f; 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.S…

3.C++:类与对象(下)

一、再谈构造函数 1.1构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;i…

== 和 equals 的区别是什么?

和 equals() 在 Java 中都是用于比较两个对象&#xff0c;但它们之间存在显著的差异&#xff1a; 比较的内容&#xff1a; &#xff1a;这是 Java 中的基本比较运算符&#xff0c;对于基本数据类型&#xff08;如 int, char, double 等&#xff09;&#xff0c;它比较的是值&a…

二手车交易网站|基于JSP技术+ Mysql+Java+ B/S结构的二手车交易网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

将若依项目部署上线

1. 购买轻量服务器&#xff0c;新人优惠一年61元&#xff08;有点赚&#xff09;&#xff1b; 2. 在轻量服务器重置密码&#xff0c;再远程连接。 3. 登录宝塔面板&#xff1b; 4. 下载mysql5.7&#xff0c;redis7.2&#xff0c;nginx 5. 在宝塔页面设置数据库密码&#xf…

快速熟悉ElasticSearch的基本概念

1.全文检索 全文检索是通过文本内容进行全面搜索的技术。通过全文检索可以快速地在大量文本数据中查找包含特定关键词或者短语的文档&#xff0c;并且返回相关的搜索结果。 检索和查询的区别 检索没有搜索条件边界&#xff0c;检索的结果取决于相关性&#xff0c;相关性计算…

VUE:内置组件<Teleport>妙用

一、<Teleport>简介 <Teleport>能将其插槽内容渲染到 DOM 中的另一个位置。也就是移动这个dom。 我们可以这么使用它: 将class为boxB的盒子移动到class为boxA的容器中。 <Teleport to".boxA"><div class"boxB"></div> &…

OC高级编程 第3章:Grand Central Dispatch

3.1 Grand Central Dispatch (GCD)概要 3.1.1什么是GCD Grand Central Dispatch&#xff08;GCD&#xff09;是异步执行任务的技术之一。一般将应用中记述线程管理用的代码在系统级中实现。开发者只要定义想执行的任务并追加到Dispatch Queue中&#xff0c;GCD就能生成必要的…

如何使用Docker安装Paperless-ngx系统并实现远程在线搜索查阅文档

文章目录 1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 Paperless-ngx是一个开源的文档管理系统&#xff0c;可以将物理文档转换成可搜索的在线档案&#xff0c;从而减少纸张的使用。它内置…

登录注册界面

T1、编程设计理工超市功能菜单并完成注册和登录功能的实现。 显示完菜单后&#xff0c;提示用户输入菜单项序号。当用户输入<注册>和<登录>菜单序号时模拟完成注册和登录功能&#xff0c;最后提示注册/登录成功并显示注册信息/欢迎XXX登录。当用户输入其他菜…

Docker操作基础命令

注意&#xff1a;以下命令在特权模式下进行会更有效&#xff01; 进入特权模式 sudo -ssudo su拉取镜像 sudo docker pull [镜像名] # sudo docker pull baiduxlab/sgx-rust:2004-1.1.3进入容器 端口开启服务&#xff1a; sudo docker start 3df9bf5dbd0c进入容器&#xf…

Open CASCADE学习|将圆转换为NURBS曲线

NURBS曲线&#xff0c;全称非均匀有理B样条曲线&#xff08;Non-Uniform Rational B-Splines&#xff09;&#xff0c;是计算机图形学中用于表示几何形状的数学表示方法。它结合了非均匀B样条&#xff08;B-Splines&#xff09;和有理基函数&#xff08;Rational Basis Functio…