使用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 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python 正则表达式匹配字符串中的http链接方法
Dec 25 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
Python基础类继承重写实现原理解析
Apr 03 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
pandas to_excel 添加颜色操作
Jul 14 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 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
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php 短链接算法收集与分析
2011/12/30 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
详细探究Python中的字典容器
2015/04/14 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
一分钟演讲稿
2014/04/30 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
党员先进事迹材料
2014/12/19 职场文书
英文感谢信格式
2015/01/21 职场文书
报案材料怎么写
2015/05/25 职场文书
担保书怎么写 ?
2019/04/22 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
idea下配置tomcat避坑详解
2022/04/12 Servers