python 对xlsx文件数根据日期进行统计分析_Python处理Excel的常用操作(一)
最近一直忙著學(xué)習(xí)和寫(xiě)開(kāi)題報(bào)告,都沒(méi)有時(shí)間更文了,今天偷偷來(lái)休閑一下。
很多人一開(kāi)始學(xué)習(xí)python,就是看到了很多關(guān)于python能夠快速處理和解決表格的廣告,于是便有了今天的分享。我主要利用pandas庫(kù)來(lái)做一些簡(jiǎn)單且常規(guī)的操作。
1、創(chuàng)建表格
在excel中,創(chuàng)建表格很簡(jiǎn)單,打開(kāi)excel,輸入相關(guān)信息,然后保存,便是一張表格。
在python中,可以用以下代碼實(shí)現(xiàn):
import pandas as pd df=pd.DataFrame({'ID':[1,2,3],'Name':['A','B','C']}) df = df.set_index('ID') df.to_excel(r'C:UsersAdministratorDesktoppythonprojectexcelexcel.xls') print('done')2、讀取excel文件
在excel中,直接打開(kāi)文件便可以,在python中,可以用以下代碼:
people = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelPeople.xlsx') # 當(dāng)標(biāo)題行有其他數(shù)字,則header =1, # 當(dāng)沒(méi)有標(biāo)題頭,設(shè)置header=None # people.columns=['1','2','3','4'] # people.set_index('ID',inplace = True)# 會(huì)自動(dòng)設(shè)置people = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelPeople.xlsx',index_col ='ID') print(people.shape) print(people.columns) print(people.head())3、行、列和單元格操作
在python中,一般會(huì)用字典或者序列來(lái)進(jìn)行數(shù)值的填充。
s1=pd.Series([100,200],index=['x','y']) print(s1)x 100 y 200將序列轉(zhuǎn)化為DataFrame s1 = pd.Series([1,2,3],index=[1,2,3],name='A') s2 = pd.Series([10,20,30],index=[1,2,3],name='B') s3 = pd.Series([100,200,300],index=[1,2,3],name='C')df =pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3}) print(df)A B C 1 1 10 100 2 2 20 200 3 3 30 3004、自動(dòng)填充
在excel中,自動(dòng)填充的方法可見(jiàn)下圖:
在python中需要先讀取數(shù)據(jù),但由于數(shù)據(jù)并沒(méi)有頂格,直接讀取會(huì)有錯(cuò)誤。
# skiprows=3,usecols='C:F' books = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelBooks (1).xlsx',skiprows=3,usecols='C:F',dtype={'ID':str,'InStore':str,'Date':str}) # ID列的自動(dòng)填充(兩種方法) for i in books.index:# books['ID'].at[i] =i+1books.at[i,'ID'] =i+1 # Instore列的自動(dòng)填充(兩種方法) for i in books.index:# books['InStore'].at[i]='Yes' if i%2 ==0 else 'No'books.at[i,'InStore']='Yes' if i%2 ==0 else 'No' # 日期列的自動(dòng)填充 # 按天自動(dòng)填充 start=date(2018,1,1) for i in books.index:books['Date'].at[i] = start + timedelta(days=i) print(books)ID Name InStore Date 0 1 Book_001 Yes 2018-01-01 1 2 Book_002 No 2018-01-02 2 3 Book_003 Yes 2018-01-03 3 4 Book_004 No 2018-01-04 4 5 Book_005 Yes 2018-01-05 5 6 Book_006 No 2018-01-06 6 7 Book_007 Yes 2018-01-07 7 8 Book_008 No 2018-01-08 8 9 Book_009 Yes 2018-01-095、函數(shù)填充、計(jì)算列
在excel中,通過(guò)兩列數(shù)據(jù)計(jì)算結(jié)果,可以用公式,比如說(shuō),我要計(jì)算銷售額,那么在excel的單元格輸入=銷量范圍*單價(jià)數(shù)據(jù)范圍,在python中可以使用以下代碼:
books = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelBooks.xlsx',index_col='ID') # 第一種方式 books['Price'] = books['ListPrice'] *books['Discount'] # 第二種方式(將單元格進(jìn)行依次計(jì)算) for i in books.index: books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i] # 第三種方式(只算一部分的價(jià)格,不一定每一個(gè)都需要) for i in range(5,16): books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i] print(books)6、數(shù)據(jù)排序
在excel中有自動(dòng)的排序功能,在python中可以利用sort_values()函數(shù)實(shí)現(xiàn)
products = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelList.xlsx', index_col='ID') products.sort_values(by=['Worthy', 'Price'], ascending=[True, False], inplace=True) print(products)Name Price Worthy ID 18 Product_018 11.22 No 15 Product_015 10.31 No 3 Product_003 9.62 No 9 Product_009 8.98 No 6 Product_006 7.34 No 12 Product_012 7.29 No 2 Product_002 11.99 Yes 17 Product_017 11.95 Yes 8 Product_008 11.14 Yes 4 Product_004 11.08 Yes 7 Product_007 10.97 Yes7、數(shù)據(jù)過(guò)濾和篩選
在excel中有篩選器可以根據(jù)相關(guān)提示一步步操作,而python中可以用以下代碼設(shè)置篩選器:
students = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelStudents.xlsx', index_col='ID') students = students.loc[students['Age'].apply(lambda a:18 <= a <= 30)].loc[students.Score.apply(lambda s:60 <= s < 90)] print(students)Name Age Score ID 4 Student_004 27 73 8 Student_008 21 61 9 Student_009 18 85 19 Student_019 19 86今天暫時(shí)分享到這里啦,等后期慢慢整理剩下的一些常用技巧。
總結(jié)
以上是生活随笔為你收集整理的python 对xlsx文件数根据日期进行统计分析_Python处理Excel的常用操作(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 压缩过的js代码怎么还原_Fundebu
- 下一篇: 复习Java字节流_字符流使用及案例