使用python對excel表格處理的一些小功能
python對excel表格處理的一些小功能 功能概覽pandas庫的一些應(yīng)用文件讀入計(jì)算表格中每一行的英文單詞數(shù)簡單用textblob進(jìn)行自然語言情感分析判斷一行中是不是有兩列值都與其他行重復(fù)(可推廣至多列)對表格中的兩列自定義函數(shù)運(yùn)算判斷表格中某列中是否有空對表格某列中時(shí)間格式的修正運(yùn)用matplotlib畫時(shí)間序列圖,重疊圖
功能概覽
做數(shù)模模擬賽時(shí)學(xué)到的一些對表格處理的知識,為了方便自己以后查找,遂寫成一篇文章,也希望能幫助大家:)
pandas庫的一些應(yīng)用
文件讀入
代碼如下,每一句后面都有注釋!
包括知識點(diǎn):
1.excel文件的寫入和輸出;
2.檢驗(yàn)表格中是否有NaN,有即刪除一行;
3.把表格某列中所有某字母替換成另一字母,所有某數(shù)字替換成另一數(shù)字;
4.檢驗(yàn)表格某列中每一格是Y還是N,是Y就在新列中對應(yīng)輸出1,反之則為0;
5.對表格中多列進(jìn)行運(yùn)算
(首先要配置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則對應(yīng)新列中取值為1 word['n']=word['vine'].str.contains('Y').astype(int) word['n']=word['n'].replace(1,2) #把列索引為n的這一列中所有為1的值轉(zhuǎn)換為2 s = word.apply(lambda word: word['a'] *(word['m']+word['n']) , axis=1) #s列是由表格中其他列的計(jì)算得到 word['Si']=(s - s.min())/(s.max() - s.min()) #對s列中的值進(jìn)行歸一化處理 print(word['Si']) //打印索引為Si的列 #print(s) #print(word['n']) word.to_excel('C:/math/Problem_C_Data/SVVp.xlsx',engine='xlsxwriter') //輸出excel文件到電腦中 print('finished')
計(jì)算表格中每一行的英文單詞數(shù)
包含知識點(diǎn):
1.dataframe和字典、列表的轉(zhuǎn)換;
2.如何遍歷字典;
3.計(jì)算dataframe中每一列的英文句子中的單詞數(shù)
import pandas as pd import xlsxwriter word=pd.read_excel('C:/math/Problem_C_Data/reviewh.xlsx') #里面只有一列數(shù)據(jù) c=[] #列表,用來統(tǒng)計(jì)每一行的英文句子的英文單詞個(gè)數(shù) word=word.set_index(word.index).T.to_dict('list') #把這一列數(shù)據(jù)按dataframe的索引轉(zhuǎn)換成字典 for key,value in word.items(): #遍歷字典 s=str(value) #先把表格里當(dāng)前行的內(nèi)容轉(zhuǎn)換成字符串 a=s.split(' ') #把英文句子按空格分割 num_s=len(a) #計(jì)算出單詞個(gè)數(shù) c.append(num_s) #添加到c中 c=pd.DataFrame(c) #由列表轉(zhuǎn)換為dataframe c.to_excel('C:/math/Problem_C_Data/counth.xlsx',engine='xlsxwriter') //輸出成新的文件 print('finished')
簡單用textblob進(jìn)行自然語言情感分析
用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轉(zhuǎn)化成textblob對象 blob = blob.sentences #利用TextBlob句子標(biāo)記化句子 first = blob[0].sentiment #對標(biāo)記化后的句子進(jìn)行情感分析(我這里只有一個(gè)句子,如果有很多句就添加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')
判斷一行中是不是有兩列值都與其他行重復(fù)(可推廣至多列)
判斷表中是不是有在同一行中a列和b列值都相同的情況。如第一行中a=1,b=2,第4行中a=1,b=2,則這兩行相同;如果第8行中a=1,b=3,則它和第一行不重復(fù)
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() #判斷表中有沒有重復(fù)的,如果有則輸出為true ll = z['repeat'].values.tolist() #把這一列轉(zhuǎn)變成列表 if 'True' in ll: #遍歷列表,如果里面有true,就說明有重復(fù),就輸出yes print('yes') print('finished')
對表格中的兩列自定義函數(shù)運(yùn)算
(此處定義的是除法運(yùn)算)
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,則不運(yùn)算,結(jié)果直接為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
對表格某列中時(shí)間格式的修正
原格式是月/日/年,如1/11/2014,改為標(biāo)準(zhǔn)datetime格式2014-01-11(此處還要舍去后面的00:00:00),方便之后畫圖,也方便排序等
import pandas as pd import datetime #引入庫 #導(dǎo)入數(shù)據(jù)集 data =pd.read_excel('C:/math/Problem_C_Data/Exx.xlsx') data = data.loc[:, ['review_date']] # 獲取數(shù)據(jù)集中列名為review_date #s= pd.to_datetime(data['review_date'], format='%m/%d/%Y') # 標(biāo)準(zhǔn)化日期,獲取時(shí)間的“年、月、日” def change_date(s): s = datetime.datetime.strptime(s, "%m/%d/%Y") #這里是原格式的形式,俺是月/日/年,可根據(jù)實(shí)際情況修改 # 把日期標(biāo)準(zhǔn)化,如把1/11/2014變成2014-01-011 00:00:00 s = str(s) # 上一步把date轉(zhuǎn)化為了時(shí)間格式,此處把date轉(zhuǎn)回str格式 return s[:10] #只獲取年月日的方法,即“位置10”之前的字符串 #字符串的切片 data['review_date'] = data['review_date'].map(change_date) # 用change_date函數(shù)處理列表中date這一列,如把“1/11/2014”轉(zhuǎn)化為“2014-01-11” #data = data.sort_values(by='review_date') # 按date這一列進(jìn)行排序,根據(jù)需要采用 data.to_excel('C:/math/Problem_C_Data/Exxx.xlsx',engine='xlsxwriter') print('finished')
運(yùn)用matplotlib畫時(shí)間序列圖,重疊圖
畫時(shí)間序列圖
(如果要畫重疊圖,記得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 = '--') #設(shè)置背后的網(wǎng)格線 plt.show() #最后一定要show()
到此這篇關(guān)于使用python對excel表格處理的一些小功能的文章就介紹到這了,更多相關(guān)python對excel表格處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python的Tkinter點(diǎn)擊按鈕觸發(fā)事件的例子
今天小編就為大家分享一篇Python的Tkinter點(diǎn)擊按鈕觸發(fā)事件的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07詳解如何使用Pandas處理時(shí)間序列數(shù)據(jù)
時(shí)間序列數(shù)據(jù)在數(shù)據(jù)分析建模中很常見,例如天氣預(yù)報(bào),空氣狀態(tài)監(jiān)測,股票交易等金融場景,本文給大家詳細(xì)介紹了如何使用Pandas處理時(shí)間序列數(shù)據(jù),文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-01-01python的tkinter布局之簡單的聊天窗口實(shí)現(xiàn)方法
這篇文章主要介紹了python的tkinter布局之簡單的聊天窗口實(shí)現(xiàn)方法,對于tkinter用法做了初步的介紹與應(yīng)用展示,需要的朋友可以參考下2014-09-09Python中參數(shù)打包和解包的實(shí)現(xiàn)
在Python中,打包和解包參數(shù)是一種操作方式,可以將多個(gè)參數(shù)打包成一個(gè)元組或字典,也可以將一個(gè)元組或字典解包成多個(gè)參數(shù),本文就來介紹一下如何使用2023-09-09Python中用Descriptor實(shí)現(xiàn)類級屬性(Property)詳解
這篇文章主要介紹了Python中用Descriptor實(shí)現(xiàn)類級屬性(Property)詳解,本文先是講解了decorator是什么,然后給出了通過Descriptor來做一個(gè)類級的Property實(shí)例,需要的朋友可以參考下2014-09-09淺談Keras參數(shù) input_shape、input_dim和input_length用法
這篇文章主要介紹了淺談Keras參數(shù) input_shape、input_dim和input_length用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python 實(shí)現(xiàn)單一數(shù)字取對數(shù)與數(shù)列取對數(shù)
這篇文章主要介紹了python 實(shí)現(xiàn)單一數(shù)字取對數(shù)與數(shù)列取對數(shù)操作,具有很好的參考價(jià)值,希望對大家有所幫助。2021-05-05