在Python中使用Pandas.DataFrame对Excel操作笔记一 - 从Excel里面获取说需要的信息

近期和朋友小A聊天的时候,总是听小A说工作越来越烦,有大量的Excel表格需要分析整理 ~~~,需要总结各种数据,做统计汇总之类,@#¥%%~~。像我等懒人,是不能容忍做大量重复性工作的。以懒人的观点来看,凡重复性的,必定有其规律啊,像太阳东升西落,像季节四季更替。只要有规律可循,就可以用工具来自动分析。能让机器做的事情,人就可以解放一下了嘛,就有更多的时间享受工作和生活了,吼吼吼微笑

出于对小A的同情,我决定写一个工具,来自动解析这“大量”的Excel表格(详谈后才知道,其实小A说的大量,也就几个上千行的表格而已)。这里记录下一些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)


读取信息到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):

这里不做过多说明,详细参数说明官方网站 http://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的几乎所有内容。

 

 

~~~~~2018/05/29 更新 ~~~~~~~

需求四:

 

 

 

来统计每位PM所有Offer列的总和。

 

import pandas as pd

excelFile = r'TEMP.xlsx'
df = pd.DataFrame(pd.read_excel(excelFile))

# 获取PM列的值
pmList = df[['PM']].values.T.tolist()[:][0]
print(pmList)

# 排除重复值
pmList = list(set(pmList))
print(pmList)

sum_list = [['PM', 'Offer']]
for pm in pmList:
    temp = []
    dfByPM = df.loc[df['PM'] == pm]
    temp.append(pm)
    for col in dfByPM.columns:
        if col == 'Offer':
            sumValue = dfByPM[col].sum() #计数指定列的和
            temp.append(sumValue)
    sum_list.append(temp)

print(sum_list)

运行结果如下:

[['PM', 'Offer'], ['Ken', 782000], ['Kate', 900000], ['Bob', 1700000], ['TOM', 105500], ['Jone', 1500000]]

需求五:

如何把这些信息写入到Excel里面呢?且往下看……

 

pandas.DataFrame.to_excel

这是一个特别惹人爱的函数,由dataframe对象直接调用,然后指定文件名、表名等各种参数。函数定义如下:

 

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

 

更详细的说明可以看这里:

 

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html#pandas.DataFrame.to_excel

思路:我们先把一个二维列表转换成dataframe对象,然后再调用这个pandas.DataFrame.to_excel函数

summaryDataFrame = pd.DataFrame(sum_list)
summaryDataFrame.to_excel(filePath, encoding='utf-8', index=False, header=False)filePath, encoding='utf-8', index=False, header=False)

运行后就会在filePath下面发现新生成的文件。

对excel的查询再存储就简单记录到这里,后续说说修改Excel的样式在现存excel里面添加内容

  • 72
    点赞
  • 436
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: PandasPython一个强大的数据分析库,它可以轻松地读取、处理和分析各种数据类型,包括Excel表格。本文将介绍如何使用Pandas操作Excel文件,并提供相应的笔记PDF文件进行参考。 要使用Pandas操作Excel文件,首先需要安装Pandas库。在安装完Pandas之后,我们可以使用"pandas.read_excel"函数来读取Excel文件。该函数可以接受Excel文件路径作为参数,并返回一个PandasDataFrame对象,以便我们进行后续的数据操作和分析。 一旦我们读取Excel文件,就可以使用Pandas提供的各种函数来对数据进行处理和分析。例如,我们可以使用"head"函数来查看数据的前几行,使用"describe"函数来获取数据的统计信息,或者使用"sort_values"函数对数据进行排序等等。这些函数可以帮助我们更好地理解和掌握数据,从而做出更准确的分析和决策。 此外,Pandas还提供了一些函数来进行数据的筛选、修改和计算。我们可以使用"loc"和"iloc"函数来选择特定的行和列,使用"fillna"函数来填充空值,使用"apply"函数对某一列数据进行自定义计算等等。这些函数的使用可以帮助我们快速地完成数据的处理和分析任务。 最后,我们可以将PandasDataFrame对象转换为PDF文件,以便记录我们的数据处理和分析过程。可以使用"df.to_pdf"函数将DataFrame对象保存为PDF文件,该文件可以作为笔记使用,方便我们回顾和分享。 总之,Pandas提供了丰富而强大的功能,可以帮助我们轻松地操作Excel文件,并进行相关的数据处理和分析。同时,我们可以将操作过程记录为PDF文件,方便日后参考和分享。 ### 回答2: pandas操作Excel的方法非常方便,可用于读取、写入和操作Excel文件。下面是关于pandas操作Excel笔记。 1. 读取Excel文件:可以使用`pandas.read_excel()`函数来读取Excel文件,并将其转换为DataFrame对象。可以通过指定文件路径、工作表名称和其他参数来读取不同的工作表和数据。 2. 数据筛选和操作:我们可以使用pandas的各种函数和方法对Excel的数据进行筛选和操作。例如,`df.drop()`可以删除指定的行或列,`df.loc()`可以按条件选择数据等。这些方法可以帮助我们根据需要Excel的数据进行处理和分析。 3. 数据写入Excel使用`pandas.DataFrame.to_excel()`函数可以将DataFrame对象写入到Excel文件。可以通过指定文件路径和其他参数来实现对Excel文件的写入操作。 4. 数据统计和计算:pandas提供了许多内置函数和方法来进行数据的统计和计算操作。例如,`df.mean()`可以计算平均值,`df.sum()`可以计算总和等。这些函数和方法可以帮助我们快速计算和分析Excel的数据。 总之,pandas是一个强大的工具,可以方便地操作Excel文件。它提供了许多函数和方法,可以帮助我们读取、写入和处理Excel的数据。通过使用pandas,我们可以更高效地进行数据分析和处理工作,在处理大量数据时尤其有用。无论是初学者还是有经验的数据分析师,都可以受益于pandasExcel操作的优势。 ### 回答3: pandas是一个在Python用于数据分析和操作的强大库。它提供了大量的函数和方法,方便我们对Excel文件进行读取、写入和处理。下面是关于pandas操作Excel的一些笔记: 1. 读取Excel文件: 我们可以使用pandas的`read_excel()`函数来读取Excel文件。只需要传入Excel文件的路径或URL即可。读取后的数据可以保存在DataFrame对象,方便后续的操作和分析。 2. 写入Excel文件: 利用pandas,我们可以使用`to_excel()`函数将数据从DataFrame对象写入Excel文件。我们可以指定文件的输出路径和文件名,还可以设置写入的sheet名称和是否包含行索引。 3. 数据操作和处理: pandas提供了丰富的数据处理功能。我们可以对读取Excel数据进行选取、过滤、排序、合并、拆分等操作。比如可以使用`df.head()`来获取数据的前几行,使用`df.describe()`来获取数据的基本统计信息。 4. 数据筛选和过滤: 在pandas,我们可以使用布尔索引来筛选和过滤数据。比如可以使用`df[df['列名'] > 值]`来获取满足条件的数据行。 5. 数据统计和分析: pandas提供了丰富的数据统计和分析函数,可以方便地进行数据聚合、求和、平均值等操作。比如可以使用`df.groupby('列名').mean()`来对数据进行分组并计算平均值。 6. 缺失值处理: 如果Excel文件存在缺失值,我们可以使用pandas的函数来处理缺失值。比如使用`df.dropna()`来删除包含缺失值的行,使用`df.fillna(value)`来填充缺失值。 总之,pandas提供了丰富的函数和方法,方便我们对Excel文件进行读取、写入和处理。它不仅简化了数据操作的流程,还可以高效地处理大量的数据。通过对pandas的学习和应用,我们可以更好地处理和分析Excel数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值