最近一直忙着学习和写开题报告,都没有时间更文了,今天偷偷来休闲一下。
很多人一开始学习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  3004、自动填充
在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    Yes7、数据过滤和筛选
在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今天暂时分享到这里啦,等后期慢慢整理剩下的一些常用技巧。