教你怎么在Python中使用Pandas.DataFrame对Excel进行操作

教你怎么在Python中使用Pandas.DataFrame对Excel进行操作

 

这里记录下一些Pandas对Excel的操作过程,供自己和码友们交流,共同提高、不断改进。

环境:Python3.6 + Pandas(0.22)

有一个1000行,28列的表格,包含了公司每个项目的各种信息(项目ID,名称,开始时间,状态,结束时间,报价,税率……)。这么多列,看了确实头晕@_@。这里我做了一个简单的表格,来说明一下Pandas是如何读取、筛选Excel的。

\

import pandas as pd

excelFile = r'TEMP.xlsx'

df = pd.DataFrame(pd.read_excel(excelFile))

print(df)

扫描二维码关注公众号,回复: 5440436 查看本文章

读取信息到DataFrame里面就这么简单,只需要提供一个excel的名称就好了,当然默认的Sheet名称是Sheet1。我们可以指定读取Sheet的名称的。且看 read_excel 的定义。

def read_excel(io, sheet_name=0, header=0, skiprows=None, skip_footer=0,

index_col=None, names=None, usecols=None, parse_dates=False,

date_parser=None, na_values=None, thousands=None,

convert_float=True, converters=None, dtype=None,

true_values=None, false_values=None, engine=None,

squeeze=False, **kwds):

这里不做过多说明,详细参数说明官方网站 https://pandas.pydata.org/pandas-docs/version/0.22/api.html。

print(df) 读取到的信息如下,是不是很简单(向Pandas开发团队致敬):

Project ID Project Name Start Time Status Offer Tax Rate PM

0 #10001 Microsoft_XXXX 2018-01-01 Completed 1000000 0.060 Bob

1 #10002 Adobe_XXXX 2018-01-02 Processing 105500 0.065 TOM

2 #10003 VMVare_XXXX 2018-01-03 Processing 280000 0.070 Kate

3 #10004 Intel_XXXX 2018-01-04 Processing 520000 0.060 Jone

4 #10005 HP_XXXX 2018-01-05 Pending 600000 0.060 Bob

5 #10006 Lenovo_XXXX 2018-01-06 Completed 980000 0.080 Jone

6 #10007 DELL_XXXX 2018-01-07 Processing 620000 0.060 Kate

7 #10008 ALI_XXXX 2018-01-08 Processing 100000 0.060 Bob

8 #10009 Apple_XXXX 2018-01-09 Pending 80000 0.090 Ken

9 #10010 Google_XXXX 2018-01-10 Completed 610000 0.060 Ken

10 #10011 Amazon_XXXX 2018-01-11 Pending 92000 0.125 Ken

需求一:

我们只想要 Project Name、Status、Offer、Tax Rate、PM 这几列的信息:

import pandas as pd

excelFile = r'TEMP.xlsx'

df = pd.DataFrame(pd.read_excel(excelFile))

df1= df[['Project Name', 'Status', 'Offer', 'Tax Rate', 'PM']]

print(df1)

\

需求二:

我们只想要 统计 Bob 的项目

import pandas as pd

excelFile = r'TEMP.xlsx'

df = pd.DataFrame(pd.read_excel(excelFile))

df1 = df[['Project Name', 'Status', 'Offer', 'Tax Rate', 'PM']]

df2 = df1.loc[df1['PM'] == 'Bob']

print(df2)

\

我们只想要 统计 Bob 的,Status为Completed的项目

import pandas as pd

excelFile = r'TEMP.xlsx'

df = pd.DataFrame(pd.read_excel(excelFile))

df1 = df[['Project Name', 'Status', 'Offer', 'Tax Rate', 'PM']]

df2 = df1.loc[df1['PM'] == 'Bob'].loc[df1['Status'] == 'Completed']

print(df2)

\

需求三:

来统计PM各自的项目信息。

分析:首先我们要知道都有哪些PM,这在表的PM列里面有。

import pandas as pd

excelFile = r'TEMP.xlsx'

df = pd.DataFrame(pd.read_excel(excelFile))

df1 = df[['Project Name', 'Status', 'Offer', 'Tax Rate', 'PM']]

df2 = df1.loc[df1['PM'] == 'Bob'].loc[df1['Status'] == 'Completed']

#获取PM列的值

pmList = df1[['PM']].values.T.tolist()[:][0]

print(pmList)

#排除重复值

pmList = list(set(pmList))

print(pmList)

for pm in pmList:

dfByPM = df1.loc[df1['PM'] == pm]

print('\r\n')

print(dfByPM)

结果如下:

\

pandas 是不是很强大,我们只需要很少的代码,就可以读取和查询excel的几乎所有内容。

猜你喜欢

转载自blog.csdn.net/u010735147/article/details/87282614