原标题:Python实现EXCEL的常规操作,一文涵盖10个方面

前言:

EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条)或者需要很复杂的公式时就显得没那么方便了(卡卡卡),所以还是那句话,“Life is short, you need Python”,下面就总结一些python替代EXCEL的常用操作,方便大家学习。

本例数据集采用网上公开的数据源,某地森林大火数据,共有13个特征,X和Y代表地理位置,month代表月份,day代表星期几,FFMC代表细小可燃物湿度码,DMC代表粗腐殖质湿度码,DC代表干旱码,ISI代表初始蔓延指数,temp代表温度,RH代表相对湿度,wind代表风速,rain代表降雨量,area代表地区。

目录:

1、导入数据源

2、数据基本操作

3、描述性统计

4、缺失值处理

5、筛选

6、替换

7、排序

8、关联

9、聚合

10、数据透视表pd.pivot_table()

一、导入数据源

#导入相关库

import pandas as pd

import numpy as np

import os

from pandas import DataFrame,Series

import re

df =pd.read_csv(r'E:\work\daima\python\forestfires.csv') #打开文件

导入数据的方式有很多种,我们这里只介绍其中一种;

二、数据基本处理

1)查看列名和数据类型

print(df.columns) #查看列名

print(df.dtypes) #查看各列数据类型

2)查看指定行列数据

print(df.head(20)) #查看前20行数据

df=df.loc[:,'FFMC':'rain'] #选择FFMC到rain列所有数据

3)删除行或列

df=df.drop(['wind', 'rain', 'area'],axis=1) #删除wind,rain和area三列

df_an=df_an.loc[-(df_an['qudao']=='Total')] #删除qudao列等于'Total'的行

4)移除重复数据

df_new=df.drop_duplicates(['month','day']) #移除month和day列包含重复值得行,保留第一个

df_new=df.drop_duplicates(['month'],take_last=True )#移除month列包含重复值得行,保留最后一个

5)更改列名

df.rename(columns={'ISI':'isi'}, inplace = True) #ISI列列名改为isi

三、描述性统计

1)计算某列变量频数

print(df['month'].unique()) #输出month列唯一值

print(df['month'].value_counts()) #输出month列各变量出现频数

2)分段统计

bins=[0,10,20,30,40,50,60,70,80,90,100]

group_names=['0-10','10-20','20-30','30-40','40-50','50-60','60-70','70-80','80-90','90-100']

cats=pd.cut(df['RH'],bins,labels=group_names)

pd.value_counts(cats,sort=False)

3)添加一列分组列,做多维频数统计

bins=[0,10,20,30,40,50,60,70,80,90,100]

group_names=['0-10','10-20','20-30','30-40','40-50','50-60','60-70','70-80','80-90','90-100']

cats=pd.cut(df['RH'],bins,labels=group_names)

df_concat=pd.concat([df,cats],axis=1,ignore_index=True)

df_group=df_concat[7].groupby([df_concat[0],df_concat[6],df_concat[7]])

df_fum=df_group.agg('count')

四、缺失值处理

1、缺失值统计

1)显示有缺失值的行

df[df.isnull().values==True] #显示有缺失值的行

2)增加一列,显示每行的缺失值

df_na=(df.isnull()).sum(axis=1) #统计每行的缺失值

df=pd.concat([df,df_na],axis=1) #df和df_na横向拼接

df.rename(columns={0:'na_num'}, inplace = True) #更改列名

df=df.loc[df['na_num']<=5]#删去变量值大于5的行

2、填充缺失值

1)删除含有缺失值的行(或者全为NA的行)

df.dropna()#删除含有缺失值的行

df.dropna(how='all')#只丢弃全为NA的那些行

2)填充固定值

train_data.fillna(0, inplace=True) # 填充 0

3)填充均值

df['DC'].fillna(df['DC'].mean(),inplace=True) # 填充均值

4)填充中位数

df['DC'].fillna(df['DC'].median(),inplace=True) #DC列缺失值填充为DC列的中位数

5)填充上下条的数据

df['DC'].fillna(method='pad', inplace=True)

df['DC'].fillna(0, inplace=True)# 前一条没值就填充0

df['DC'].fillna(method='bfill', inplace=True)

df['DC'].fillna(0, inplace=True)# 后一条没值就填充0

五、筛选

1)条件筛选loc

df_sel=df.loc[(df['month']=='aug') & (df['DC']>=600)] #筛选month列等于aug且DC列大于600的所有行

2)筛选并给新列赋值

这个多用于区间匹配,例如如果A列(0,100],C列为50;A列大于100 ,C列为A列的值

df.loc[(df['DC']>0) & (df['DC']<=100) ,'DC_na']=50 # 创建新列DC_na,DC列大于0且小于等于100,DC列为50

df.loc[df['DC']>100,'DC_na']=df['DC']# 创建新列DC_na,DC列大于100等于原值,其他为NA

六、替换

1)去掉字符串两端空格

df_city['experience_new'] = df_city['experience'].map(lambda s: s.strip())#experience列中文前后端包含空格,需对改列进行分词处理(去掉空格),赋值给新列experience_new

2)替换

#将experience_new列中的应届毕业生替换为1年以下

df_city = df_city.replace({'experience_new':'应届毕业生'},'1年以下')

df_city['expreienct_new']=df_city['expreienct_new'].map(lambda s:re.sub('应届毕业生','1年以下',s))

七、排序

按照DMC列降序,DC列升序对数据集进行排序

df_paixu=df.sort_values(by=['DMC','DC'],ascending=[0,1])

八、关联

1)左关联、右关联

df_merge=pd.merge(df1,df2,on='customer_id',how='left') #左关联

print(df_merge)

2、多表进行关联

1)轴向连接:concat()

pd.concat([df1,df2],axis=1,ignore_index=True)#df1和df2横向拼接

2)多表关联:reduce()

from functools import reduce

df_list=[df_dau,df_gmv_zx,df_dau_zx]

df_zhengti=reduce(lambda left,right:pd.merge(left,right,on=['event_date','duan'],how='left'),df_list) #按照event_date,duan 从左到右对df_list中的文件进行左关联

九、聚合

聚合groupby()

df_group=df['DC'].groupby([df['month'],df['day']]) #根据month和day列对DC列进行聚合

df_fun=df_gorup.agg(['sum','mean','std']) #对df_group求和,均值和标准差

print(df_fun)

十、数据透视表pd.pivot_table()

这个函数比较难记,可以参考EXCEL数据透视表去理解,index代表列,columns代表行,values代表值,aggfunc代表要对值用什么函数,fil_value代表缺失值用0填充;

df_toushi=pd.pivot_table(df,index=['month'],columns=['day'],

values=['DC'],aggfunc=[np.sum,np.mean],fill_value=0)

print(df_toushi)

[声明]本文版权归原作者所有,内容为作者个人观点,转载目的在于传递更多信息,如涉及作品内容、版权等问题,可联系本站删除,谢谢。

更多内容可关注微信公众号:成都CDA数据分析师。返回搜狐,查看更多

责任编辑:

python涉及excel_Python实现EXCEL的常规操作,一文涵盖10个方面相关推荐

  1. Python对Excel的常规操作 之 读取带密码的文件,解除Sheet密码

    Python对Excel的常规操作 之 读取带密码的文件,解除Sheet密码 一些废话 读取加密的Excel 解除文件中Sheet的密码 写在后面 一些废话 最近一直在给部门写一个参数校验的小程序.因 ...

  2. Python对Excel的常规操作 之 读取,写入(保留原格式写入)

    Python对Excel的常规操作 之 读取,写入(保留原格式) 前言 使用Python读写Excel常用的库有win32com和xlrd.xlwd.其中win32com可读可写,它对Excel的操作 ...

  3. Python实现EXCEL的常规操作,一文涵盖10个方面!

    前言: EXCEL是日常办公最常用的软件,然而遇到数据量特别大(超过10W条)或者需要很复杂的公式时就显得没那么方便了(卡卡卡) ,所以还是那句话, "Life is short, you ...

  4. python跟excel_Python与Excel 不得不说的事情

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  5. python打开word并插入图片_Python操作word文档插入图片和表格的实例演示

    前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码 实例代码: # -*- coding: U ...

  6. Python自动化办公 - 对Excel表格的操作(openpyxl的基本使用)

    素材.笔记文档下载 1 安装openpyxl Windows用户打开命令行输入:pip install openpyxl Mac用户打开终端/Terminal输入:pip3 install openp ...

  7. python创建excel_python创建Excel文件数据的方法

    原博文 2018-12-07 18:41 − # -*- coding: utf-8 -*- # @Time : 2018/12/6 17:10 # @Author : suchao # @Disc: ...

  8. python与excel-用Python完成Excel的常用操作

    在以前,商业分析对应的英文单词是Business Analysis,大家用的分析工具是Excel,后来数据量大了,Excel应付不过来了(Excel最大支持行数为1048576行),人们开始转向pyt ...

  9. python学习之对excel文件的操作

    python ----------操作excel文件 安装相应的库 pip install xlrd xlwt xlutils 可以兼容低版本的excel文件 pip install openpyxl ...

  10. Python 读写txt和excel文件及操作数据库

    前言 我们经常会遇到我们对数据库中数据进行拉取并处理脚本,我们如果要操作线上数据库.用java操作就过于麻烦,这个时候我们更方便的方法是直接通过一个python脚本去读取数据库,并进行处理数据.那么我 ...

最新文章

  1. “全能”选手—Django 1.10文档中文版Part2
  2. 经典算法题每日演练——第一题 百钱买百鸡
  3. pow(x,y)函数
  4. 《程序员面试金典》解题目录(更新完毕)
  5. python_day33- udp 多道技术
  6. bt php,bt.php · jiehu0992/家谱familytree - Gitee.com
  7. 创建额外域控制器Active Directory(二)
  8. urlhelper 使用教程
  9. vue中swiper,vue-awesome-swiper实现轮播;鼠标移入暂停,移除播放;点击暂停按钮暂停,再点击播放。
  10. java中事务回滚吗_事务回滚 - 小虾米的java梦 - 博客园
  11. 全国php工资城市排名,2019年各城市工资排行_2019年全国各城市最新工资排行出炉 想去哪玩来对...
  12. idea 启动页图片更新2022.1以及2021
  13. SEO工作思路怎么写,为什么建站前要设计思路?
  14. java毕业设计鑫通物流车辆调度系统mp4Mybatis+系统+数据库+调试部署
  15. docker中mysql数据库闪退的原因
  16. python:实现DBSCAN聚类算法(附完整源码)
  17. 你还在手写sql吗? MyBatis 逆向工程使用 使用逆向工程生成实体类,超级好用的生成实体类与mapper
  18. 转载:哈佛大学精神病测试题(笑话)
  19. (求老师啊,求同伴啊)php 生命数字密码设计第一步:数据库基本连接
  20. 对问卷数据进行线性分析

热门文章

  1. Xtrabackup--InnoDB备份工具介绍(1)
  2. OSPF综合实验(有点难哦!)
  3. 【Alpha】Scrum Meeting 10
  4. InfoQ编辑2018年推荐阅读清单(第二部分)
  5. (转) oracle清空数据库脚本
  6. ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation
  7. Jenkins实现生产环境部署文件的回滚操作(Windows)
  8. Sql2008中添加程序集(转)
  9. How Google Tests Software (出书,停止更新)
  10. .net winform 里控件的Dock属性(Dock的Z 顺序停靠)