最近一直忙着学习和写开题报告,都没有时间更文了,今天偷偷来休闲一下。
很多人一开始学习python,就是看到了很多关于python能够快速处理和解决表格的广告,于是便有了今天的分享。我主要利用pandas库来做一些简单且常规的操作。
1、创建表格
在excel中,创建表格很简单,打开excel,输入相关信息,然后保存,便是一张表格。
在python中,可以用以下代码实现:
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中,直接打开文件便可以,在python中,可以用以下代码:
people = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelPeople.xlsx')
# 当标题行有其他数字,则header =1,
# 当没有标题头,设置header=None
# people.columns=['1','2','3','4']
# people.set_index('ID',inplace = True)# 会自动设置people = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelPeople.xlsx',index_col ='ID')
print(people.shape)
print(people.columns)
print(people.head())
3、行、列和单元格操作
在python中,一般会用字典或者序列来进行数值的填充。
s1=pd.Series([100,200],index=['x','y'])
print(s1)x 100
y 200将序列转化为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 300
4、自动填充
在excel中,自动填充的方法可见下图:
在python中需要先读取数据,但由于数据并没有顶格,直接读取会有错误。
# 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列的自动填充(两种方法)
for i in books.index:# books['ID'].at[i] =i+1books.at[i,'ID'] =i+1
# Instore列的自动填充(两种方法)
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'
# 日期列的自动填充
# 按天自动填充
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-09
5、函数填充、计算列
在excel中,通过两列数据计算结果,可以用公式,比如说,我要计算销售额,那么在excel的单元格输入=销量范围*单价数据范围,在python中可以使用以下代码:
books = pd.read_excel(r'C:UsersAdministratorDesktoppythonprojectexcelBooks.xlsx',index_col='ID')
# 第一种方式
books['Price'] = books['ListPrice'] *books['Discount']
# 第二种方式(将单元格进行依次计算)
for i in books.index: books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i]
# 第三种方式(只算一部分的价格,不一定每一个都需要)
for i in range(5,16): books['Price'].at[i] = books['ListPrice'].at[i] * books['Discount'].at[i]
print(books)
6、数据排序
在excel中有自动的排序功能,在python中可以利用sort_values()函数实现
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 Yes
7、数据过滤和筛选
在excel中有筛选器可以根据相关提示一步步操作,而python中可以用以下代码设置筛选器:
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
今天暂时分享到这里啦,等后期慢慢整理剩下的一些常用技巧。