使用python对excel表格处理的一些小功能


Posted in Python onJanuary 25, 2021

python对excel表格处理的一些小功能 功能概览pandas库的一些应用文件读入计算表格中每一行的英文单词数简单用textblob进行自然语言情感分析判断一行中是不是有两列值都与其他行重复(可推广至多列)对表格中的两列自定义函数运算判断表格中某列中是否有空对表格某列中时间格式的修正运用matplotlib画时间序列图,重叠图

功能概览

做数模模拟赛时学到的一些对表格处理的知识,为了方便自己以后查找,遂写成一篇文章,也希望能帮助大家:)

pandas库的一些应用

文件读入

代码如下,每一句后面都有注释
包括知识点:
1.excel文件的写入和输出;
2.检验表格中是否有NaN,有即删除一行;
3.把表格某列中所有某字母替换成另一字母,所有某数字替换成另一数字;
4.检验表格某列中每一格是Y还是N,是Y就在新列中对应输出1,反之则为0;
5.对表格中多列进行运算
(首先要配置pandas库,如果需要读取和写入文件,要配置xlsxwriter库)

import pandas as pd
import xlsxwriter 
word=pd.read_excel('C:/math/Problem_C_Data/my_pacifier.xlsx') #excel表格文件读入,括号里面写文件地址
word=word.replace(['n','y'],['N','Y'])  #把excel表里的所有n替换成N,y替换成Y
word=word.dropna(axis=0)    #如果表格里有一行中有NaN,即删除这一行
word['m'] = word['a'].str.contains('Y').astype(int)   #如果列索引为a的这一列中有Y则对应新列中取值为1
word['n']=word['vine'].str.contains('Y').astype(int)
word['n']=word['n'].replace(1,2)      #把列索引为n的这一列中所有为1的值转换为2
s = word.apply(lambda word: word['a'] *(word['m']+word['n']) , axis=1)    #s列是由表格中其他列的计算得到
word['Si']=(s - s.min())/(s.max() - s.min()) #对s列中的值进行归一化处理
print(word['Si'])                             //打印索引为Si的列
#print(s)
#print(word['n'])
word.to_excel('C:/math/Problem_C_Data/SVVp.xlsx',engine='xlsxwriter')      //输出excel文件到电脑中
print('finished')

计算表格中每一行的英文单词数

包含知识点:
1.dataframe和字典、列表的转换;
2.如何遍历字典;
3.计算dataframe中每一列的英文句子中的单词数

import pandas as pd
import xlsxwriter 
word=pd.read_excel('C:/math/Problem_C_Data/reviewh.xlsx')  #里面只有一列数据
c=[]      #列表,用来统计每一行的英文句子的英文单词个数
word=word.set_index(word.index).T.to_dict('list') #把这一列数据按dataframe的索引转换成字典     
for key,value in word.items():    #遍历字典
  s=str(value)           #先把表格里当前行的内容转换成字符串
  a=s.split(' ')          #把英文句子按空格分割
  num_s=len(a)            #计算出单词个数
  c.append(num_s)          #添加到c中
c=pd.DataFrame(c)           #由列表转换为dataframe
c.to_excel('C:/math/Problem_C_Data/counth.xlsx',engine='xlsxwriter')  //输出成新的文件
print('finished')

简单用textblob进行自然语言情感分析

用NLP简单分析表格中每一格的英文句子的情感极性和主观性

import pandas as pd
from textblob import TextBlob
import xlsxwriter 
word=pd.read_excel('C:/math/Problem_C_Data/reviewh.xlsx')
c=[]
word=word.set_index(word.index).T.to_dict('list')
for key,value in word.items(): 
  s=str(value)
  blob = TextBlob(s)     #把s转化成textblob对象
  blob = blob.sentences   #利用TextBlob句子标记化句子
  first = blob[0].sentiment   #对标记化后的句子进行情感分析(我这里只有一个句子,如果有很多句就添加second=blob[1].sentiment)
  c.append(first.polarity)    #这里只添加了情感极性,如果还需要主观性,就直接用first
c=pd.DataFrame(c)
c.to_excel('C:/math/Problem_C_Data/NLPh.xlsx',engine='xlsxwriter')
print('finished')

判断一行中是不是有两列值都与其他行重复(可推广至多列)

判断表中是不是有在同一行中a列和b列值都相同的情况。如第一行中a=1,b=2,第4行中a=1,b=2,则这两行相同;如果第8行中a=1,b=3,则它和第一行不重复

import pandas as pd
import xlsxwriter
word=pd.read_excel('C:/math/Problem_C_Data/my_hair_dryer.xlsx')
x=word['a']     
y=word['b']
z=pd.concat([x,y],axis=1)#对axis=1即把两列按行对齐,即左右拼接成一张表       
z['repeat']=z.duplicated()  #判断表中有没有重复的,如果有则输出为true
ll = z['repeat'].values.tolist()   #把这一列转变成列表   
if 'True' in ll:   #遍历列表,如果里面有true,就说明有重复,就输出yes
  print('yes')
print('finished')

对表格中的两列自定义函数运算

(此处定义的是除法运算)

import pandas as pd
import xlsxwriter 
word=pd.read_excel('C:/math/Problem_C_Data/my_hair_dryer.xlsx')
def chu(x,y):
  if y==0:   #分母为0,则不运算,结果直接为0
    result=0
  else:
    result=x/y
  return result
s = word.apply(lambda word:chu(word['helpful_votes'],word['total_votes']), axis=1)
s.to_excel('C:/math/Problem_C_Data/voteh.xlsx',engine='xlsxwriter')
print('finished')

判断表格中某列中是否有空

import numpy as np
import pandas as pd
import xlsxwriter 
word=pd.read_excel('C:/math/Problem_C_Data/my_hair_dryer.xlsx')
train=word['review_date']
print(train.isnull().any())   #有空即输出true

对表格某列中时间格式的修正

原格式是月/日/年,如1/11/2014,改为标准datetime格式2014-01-11(此处还要舍去后面的00:00:00),方便之后画图,也方便排序等

import pandas as pd
import datetime  #引入库

#导入数据集
data =pd.read_excel('C:/math/Problem_C_Data/Exx.xlsx')

data = data.loc[:, ['review_date']] # 获取数据集中列名为review_date
#s= pd.to_datetime(data['review_date'], format='%m/%d/%Y')

# 标准化日期,获取时间的“年、月、日”
def change_date(s):
  s = datetime.datetime.strptime(s, "%m/%d/%Y") #这里是原格式的形式,俺是月/日/年,可根据实际情况修改 
  # 把日期标准化,如把1/11/2014变成2014-01-011 00:00:00
  s = str(s) # 上一步把date转化为了时间格式,此处把date转回str格式
  return s[:10] #只获取年月日的方法,即“位置10”之前的字符串
  #字符串的切片

data['review_date'] = data['review_date'].map(change_date) 
# 用change_date函数处理列表中date这一列,如把“1/11/2014”转化为“2014-01-11”
#data = data.sort_values(by='review_date') # 按date这一列进行排序,根据需要采用
data.to_excel('C:/math/Problem_C_Data/Exxx.xlsx',engine='xlsxwriter')
print('finished')

运用matplotlib画时间序列图,重叠图

画时间序列图
(如果要画重叠图,记得x要一样,y可以不一样,然后用plt.plot(x,y0,x,y1,x,y2)即可画出重叠图)

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib
import datetime
from statsmodels.graphics.factorplots import interaction_plot
import xlsxwriter 
data=pd.read_excel('C:/math/Problem_C_Data/Exx.xlsx')
# # create data 
s=data['E']      #y轴
e0=s[2907:5043]
t=data['review_date'] 
t0=t[2907:5043]
y0 =e0.values.tolist()
x0 = pd.to_datetime(t0)     #x轴
# # plot
plt.plot(x0,y0)        
plt.gcf().autofmt_xdate()
plt.grid(ls = '--')      #设置背后的网格线
plt.show()  #最后一定要show()

到此这篇关于使用python对excel表格处理的一些小功能的文章就介绍到这了,更多相关python对excel表格处理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之集合(set)
Sep 24 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
python验证码识别教程之滑动验证码
Jun 04 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
Python日志处理模块logging用法解析
May 19 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
实例讲解Python中sys.argv[]的用法
Jun 03 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 #Python
python 数据类型强制转换的总结
Jan 25 #Python
如何用Python徒手写线性回归
Jan 25 #Python
Python try except finally资源回收的实现
Jan 25 #Python
Python中lru_cache的使用和实现详解
Jan 25 #Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 #Python
Ubuntu20下的Django安装的方法步骤
Jan 24 #Python
You might like
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
Fine Uploader文件上传组件应用介绍
2013/01/06 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
详解php用static方法的原因
2018/09/12 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
vue中的scope使用详解
2017/10/29 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python清理子进程机制剖析
2017/11/23 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
教师应聘个人求职信
2013/12/10 职场文书
好家长事迹材料
2014/01/23 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
师恩难忘教学反思
2014/04/27 职场文书
聘任书的格式及模板
2019/10/28 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript