利用Python处理Excel数据

利用Python处理Excel数据目录读取数据显示数据显示数据的行与列数查看数据格式 dtpyes 显示列名添加默认的列名显示数据后 5 行显示数据唯一值跳过文件的第 i 行不读取对缺失值进行识别数据清洗处理空值更改数据格式更改列名称删除重复值对列表内的值进行替换数据预处理对数据进行排序数据分组数据分列数据提取按标签提取按位置提取按标签和位置提取按条件提取从合并的数值中提取出指

 
 

目录

  • 读取数据
  • 显示数据
    • 显示数据的行与列数
    • 查看数据格式dtpyes
    • 显示列名
    • 添加默认的列名
    • 显示数据后5行
    • 显示数据唯一值
    • 跳过文件的第i行不读取
    • 对缺失值进行识别
  • 数据清洗
    • 处理空值
    • 更改数据格式
    • 更改列名称
    • 删除重复值
    • 对列表内的值进行替换
  • 数据预处理
    • 对数据进行排序
    • 数据分组
    • 数据分列
  • 数据提取
    • 按标签提取
    • 按位置提取
    • 按标签和位置提取
    • 按条件提取
    • 从合并的数值中提取出指定的数值
  • 数据筛选
    • 按条件筛选
  • 数据汇总
    • 分类汇总
    • 数据透视
  • 数据统计
    • 数据采样
    • 描述统计
    • 协方差
    • 相关性分析

读取数据

import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime from pandas import Series, DataFrame

读取x.xlsx文件

利用Python处理Excel数据

EXCEL文件



  • 方法1.
    1. 引入xlrd模块
      import xlrd
    2. 读取数据
      df = xlrd.open_workbook('x.xlsx')
  • 方法2
    1. 利用pandas模块
      import pandas as pd
    2. 读取数据
      df = pd.read_excel('x.xlsx')

      本文利用方法2

显示数据

  • 显示数据的行与列数
    df.shape
  • 查看数据格式dtpyes
    df.dtypes
    利用Python处理Excel数据

    数据格式



  • 对文件进行描述
利用Python处理Excel数据

image.png



  • 显示列名
    df.columns
    利用Python处理Excel数据

    列名



  • 如果数据没有标题行,可用pandas添加默认的列名
    df = pd.read_excel('x.xlsx', header = None) #显示前数据前5行 df.head(5)
    利用Python处理Excel数据

    添加默认列名



    本数据有列名,所以不用添加
  • 显示数据后5行
    df.tail(5)
    利用Python处理Excel数据

    数据后5行



  • 显示数据唯一值(unique函数)
    df['经纪人级别'].unique()
利用Python处理Excel数据

经纪人级别



级别为0 是因为对数据缺失值进行了填充

  • 不读取哪里数据,可用skiprows=[i],跳过文件的第i行不读取
    # 没有读取经纪人编号为的行 df = pd.read_excel('x.xlsx',skiprows=[2] ) df.head()
    利用Python处理Excel数据

    不读取第二行



  • 对缺失值进行识别
    # 所有缺失值显示为True # df.isnull() pd.insull(df)
    利用Python处理Excel数据

    显示缺失值



数据清洗

  • 处理空值
    删除空值 (dropna函数)

    df.dropna(how='any')
    利用Python处理Excel数据

    删除空值



    利用Python处理Excel数据

    删除空值



    填充空值(fillna函数)

    # 空值用0填充 df.fillna(value=0)
利用Python处理Excel数据

填充空值



 # 利用经纪人响应时长的均值对缺失值进行填充 df['经纪人响应时长'].fillna(df['经纪人响应时长'].mean())
利用Python处理Excel数据

填充均值



  • 更改数据格式

    通过dtypes函数显示大区的数据格式为int64,现在改成float格式

    df['大区'].astype('float64')
利用Python处理Excel数据

float64



  • 更改列名称
    df.rename(columns={'IM渠道': '渠道'})
    利用Python处理Excel数据

    更改列名称



  • 删除重复值 (drop_duplicates()函数)
    第一次出现的保留,其余删除

    #使用默认第一次出现的被保留,后面出现的被删除 df['门店'].drop_duplicates()
利用Python处理Excel数据

第一次出现保留



最后一次出现的保留,其余删除

df['门店'].drop_duplicates(keep = 'last')
利用Python处理Excel数据

最后一次出现的保留



  • 对列表内的值进行替换(replace函数)
    df['客户UCID'].replace('', '110')
    利用Python处理Excel数据

    替换



数据预处理

  • 对数据进行排序
    df.sort_values(by=['客户当天发送消息数'])
    利用Python处理Excel数据

    排序



  • 数据分组——excel中的数据透视表
    对客户聊天记录进行分组

    #如果price列的值>3000,group列显示high,否则显示low df['group'] = np.where(df['客户当天发送消息数'] > 5,'high','low') df
利用Python处理Excel数据



利用Python处理Excel数据

分组



对符合多个条件进行分组

# 符合经纪人级别为A1且经纪人响应时长>24的在sign列显示为1 df.loc[(df['经纪人级别'] == 'A1') & (df['经纪人响应时长']>= 24.0), 'sign']=1 df
利用Python处理Excel数据

符合多个条件



  • 数据分列
    pd.DataFrame((x.split('网') for x in df['客户注册渠道']), index=df.index,columns=['客户注册渠道','size'])
    利用Python处理Excel数据

    分列



数据提取

  • 按标签提取
    • loc函数
      df.loc[0:3]
      利用Python处理Excel数据

      提取0-3行的数据



    • 按日期进行提取
      # 重新设置索引 df.reset_index() #设置日期为索引 df=df.set_index('日期') #提取2016年11月2号的数据 df[‘2016-11-2’ : '2016-11-02']
      利用Python处理Excel数据

      11月2号的数据



  • 按位置进行提取(iloc函数)
    • 按区域提取
      df.iloc[:4, :5]
      利用Python处理Excel数据

      4行5列



    • 按位置提取
      #[0, 2, 5] 代表指定的行,[ 4, 5 ] 代表指定的列 df.iloc[[0,2,5],[4,5]]
利用Python处理Excel数据

image.png



  • 按标签和位置提取 ix
    # 行按日期排列,列按位置设置 df.ix['2016-11-03':'2016-11-03',4:6]
利用Python处理Excel数据

标签和位置



  • 按条件提取(loc与isin函数)
    • 用isin函数进行判断
      # 判断经纪人级别是否为A3 df['经纪人级别'].isin(['A3'])
      利用Python处理Excel数据

      判断



      • 先判断结果,将结果为True的提取
        #先判断经纪人级别列里是否包含A3和M4,然后将复合条件的数据提取出来。 df.loc[df['经纪人级别'].isin(['A3','M4'])]
        利用Python处理Excel数据

        提取



  • 从合并的数据中提出指定的数值
    # 提取链家网三个字 data = df['客户注册渠道'] pd.DataFrame(data.str[:3])
利用Python处理Excel数据

提取指定数值



数据筛选

  • 按条件筛选
    • 符合多个条件,并显示指定条件(与)
      #级别为M4,发送消息数大于110 df.loc[(df['经纪人当天发送消息数'] > 110) & (df['经纪人级别'] == 'M4'), ['经纪人响应时长','是否5分钟内响应','经纪人系统号']]
      利用Python处理Excel数据

      级别为M4,发送消息大于110



    • 符合多个条件中的一个
      #发送消息数大于400或响应时长大于60000 df.loc[(df['经纪人当天发送消息数'] > 400) | (df['经纪人响应时长'] > 60000.0), ['经纪人响应时长','经纪人系统号']].sort(['经纪人响应时长'])
      利用Python处理Excel数据



      #筛选完可直接求和 df.loc[(df['经纪人当天发送消息数'] > 400) | (df['经纪人响应时长'] > 60000.0), ['经纪人响应时长','经纪人系统号']].sort(['经纪人响应时长']).经纪人响应时长.sum()

      .0

      • 不等于
        df.loc[(df['经纪人当天发送消息数']!= 200) & (df['经纪人级别'] == 'A4'), ['经纪人响应时长','经纪人系统号']].sort(['经纪人响应时长'])
        利用Python处理Excel数据



        # count() 算总数 df.loc[(df['经纪人当天发送消息数']!= 200) & (df['经纪人级别'] == 'A4'), ['经纪人响应时长','经纪人系统号']].sort(['经纪人响应时长']).经纪人系统号.count()

        927

  • 使用query函数
    df.query('经纪人级别 == ["A4", "M4"]')
    利用Python处理Excel数据

    A4或M4



数据汇总

  • 分类汇总groupby
    • 对所有列进行分类汇总
      df.groupby('经纪人级别').count()
      利用Python处理Excel数据

      经纪人级别



    • 对特定列进行汇总
      df.groupby('经纪人级别')['经纪人响应时长'].count()
      利用Python处理Excel数据

      对响应时长列进行汇总



    • 增加分类条件
      df.groupby(['经纪人级别','经纪人是否回复'])['经纪人响应时长'].count()
      利用Python处理Excel数据

      数据不准确,因为进行了筛选填充



    • 进行分组并进行算数运算
      # 对经纪人响应时长进行分类汇总,并计算均值 df.groupby('经纪人级别')['经纪人响应时长'].agg([ np.mean])
      利用Python处理Excel数据

      分类,均值



  • 数据透视
    pd.pivot_table(df,index=["经纪人当天发送消息数"],values=["经纪人响应时长"], columns=["经纪人级别"],aggfunc[len,np.sum],fill_value=0,margins=True)
    利用Python处理Excel数据



    利用Python处理Excel数据

    数据透视



数据统计

  • 数据采样
    • 简单随机抽取sample
      df.sample(n=3)
      利用Python处理Excel数据

      随机抽取3行



    • 设置采样权重
      需要对每一行进行权重设置,列表行数少可行,过多不可行
      假设有4行数据,设置采样权重
      weights = [0, 0, 0.5, 0.5] df.sample(n=4, weights=weights)




    • 确定采样后是否放回
      # 采样后放回,True df.sample(n=6, replace=True)
  • 描述统计 describe函数
    自动生成数据的数量,均值,标准差等数据

    #round(2),显示小数点后面2位数,T转置 df.describe().round(2).T
    利用Python处理Excel数据

    描述统计



    • 标准差std()
      df['经纪人响应时长'].std()

      5605.05

  • 协方差cov
    #计算两个字段之间的协方差 df['经纪人当天发送消息数'].cov(df['客户当天发送消息数'])

    81.0398

  • 相关性分析corr
    相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关

    df['客户当天发送消息数'].corr(df['经纪人当天发送消息数'])

    0.

作者:鬼宇书生
链接:http://www.jianshu.com/p/356aaa
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。










版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199045.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午1:58
下一篇 2026年3月26日 下午1:59


相关推荐

  • html 下拉框a标签跳转,html下拉框跳转问题

    html 下拉框a标签跳转,html下拉框跳转问题满意答案 woaidaowai20 07 16 采纳率 49 等级 11 已帮助 3910 人两个下拉框 第一个里面有 A B 两个选项 第二个里面有 X Y 两个选项 后面有一个按钮 怎么做到选 A 和 X 时候点击按钮跳转 1 html 选择 A 和 Y 的时候跳转 2 html 选择 B 和 X 跳转 3 html 选择 B 和 Y 跳转 4 html bbs houdunwang com 代码如下 TESTfunction

    2026年3月17日
    3
  • linux中gz文件怎么解压,Linux解压gz文件的命令使用教程及详解

    linux中gz文件怎么解压,Linux解压gz文件的命令使用教程及详解今天小编给带来一篇 linux 解压方面的资料 Linux 解压 gz 文件的命令有 gunzip 命令 gzip 命令 tar 命令 下面本篇文章就来带大家了解一下 gz 文件是一种压缩文件 以 gz 或者 tar gz tgz 为扩展名 在 Linux UNIX 和 OSX 下常见 Linux 和 OSX 都可以直接解压使用这种压缩文件 在 Windows 下常用压缩软件 WinRAR 打开 gz 文件 它相当于常见的 RAR 和 ZIP 格式

    2026年3月19日
    2
  • 批处理命令PUSHD和POPD[通俗易懂]

    批处理命令PUSHD和POPD[通俗易懂]随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)PUSHD:语法:PUSHD[path|..]Path指定当前目录更改后的目录。该命令支持相对路径。/?在命令提示符下显示帮助。…

    2022年6月15日
    58
  • java 集成通义千问

    java 集成通义千问

    2026年3月13日
    1
  • ftp免费下载工具,4个好用的ftp免费下载工具

    ftp免费下载工具,4个好用的ftp免费下载工具ftp免费下载工具主要是网络上用来传送文件的工具。但有些ftp免费下载工具传输文件不是特别稳定。今天就来为大家分享4款站长们都爱用的ftp免费下载工具。第一款:IIS7服务器管理工具这款软件的Ftp客户端做的是非常棒的,不仅具有批量操作功能,还具有定时同步(上传和下载)和自动更新功能。这些功能真的是我超爱的功能,做事效率提高了不止一星半点。而且特别容易上手,一般的软件都还需要熟悉一下,这个就是很快的能开始运用。好处很多,需要用户慢慢去体会。有的东西是只能亲身体验过后才知道的。IIS7服务器管理工具所包

    2022年6月8日
    37
  • Java设计模式(十三)之行为型模式:策略模式

    Java设计模式(十三)之行为型模式:策略模式

    2021年4月9日
    149

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号