python和excel的结合新软件_Excel结合使用Python和Pandas

随着Excel的普及,数据专业人员必须熟悉它。 与Python的UI相比,使用Python或R处理数据具有明显的优势,因此找到一种使用代码使用Excel的方法至关重要。 值得庆幸的是,已经有了一个很棒的工具,可以将Excel和Python结合使用,称为pandas。

熊猫具有从Excel文件读取各种数据的出色方法。您也可以将熊猫的搜索结果导出回Excel,如果您的目标受众更喜欢的话。熊猫非常适合其他常规数据分析任务,例如:

快速探索性数据分析(EDA)

绘制有吸引力的图

将数据馈送到scikit-learn等机器学习工具中

在数据上建立机器学习模型

将清理和处理过的数据带入任意数量的数据工具

视频演示

截图

与Excel(包括处理Excel文件)相比,Pandas在自动化数据处理任务方面更好。

在本教程中,我们将向您展示如何使用Pandas中的Excel文件。我们将介绍以下概念。

使用必要的软件设置计算机

将数据从Excel文件读入pandas

Pandas数据探索

使用matplotlib可视化库可视化pandas中的数据

在pandas中处理和重塑数据

将数据从pandas移动到Excel

系统先决条件

在本教程中,我们将使用Python 3和Jupyter Notebook演示代码。 除了Python和Jupyter Notebook,您还将需要以下Python模块:

matplotlib –数据可视化

NumPy –数值数据功能

OpenPyXL-读取/写入Excel 2010 xlsx / xlsm文件

xlrd –读取Excel数据

xlwt –写入Excel

XlsxWriter –写入Excel(xlsx)文件

设置所有模块有多种方法。我们在下面介绍三种最常见的方案。

如果您是通过Anaconda软件包管理器安装的Python,则可以使用conda install命令安装所需的模块。例如,要安装pandas,您将执行命令– conda install pandas。

如果您已经在计算机上安装了常规的非Anaconda Python,则可以使用pip安装所需的模块。 打开命令行程序并执行命令pip install 来安装模块。 您应该用要安装的模块的实际名称替换。 例如,要安装pandas,您可以执行命令– pip install pandas。

如果您尚未安装Python,则应通过Anaconda程序包管理器进行安装。 Anaconda提供了适用于Windows,Mac和Linux计算机的安装程序。 如果选择完整的安装程序,则将在一个软件包中获得所需的所有模块以及Python和pandas。 这是最简单,最快的入门方法。

数据集

在本教程中,我们将使用由Kaggle的IMDB得分数据创建的多页Excel文件。您可以在此处下载(链接)文件。

我们的Excel文件分为三页:“ 1900年代”,“ 2000年代”和“ 2010年代”。每张表格都包含这些年份电影的数据。

我们将使用此数据集来查找电影的收视率分布,可视化具有最高收视率和净收益的电影,并计算有关电影的统计信息。 我们将使用Python和pandas分析和探索这些数据,从而展示pandas在Python中使用Excel数据的功能。

从Excel文件中读取数据

我们需要首先将数据从Excel文件导入到pandas。为此,我们首先导入pandas模块。

importpandasaspd

然后,我们使用pandas的read_excel方法从Excel文件中读取数据。调用此方法的最简单方法是传递文件名。如果未指定工作表名称,则它将读取索引中的第一张工作表(如下所示)。

excel_file ='movies.xls'movies = pd.read_excel(excel_file)

在这里,read_excel方法将数据从Excel文件读取到pandas DataFrame对象中。pandas默认将数据存储在DataFrames中。然后,我们将此DataFrame存储到一个名为movie的变量中。

Pandas具有内置的DataFrame.head()方法,可用于轻松显示DataFrame的前几行。 如果未传递任何参数,它将显示前五行。 如果传递了一个数字,它将从顶部开始显示相等数量的行。

movies.head()

TitleYearGenresLanguageCountryContent RatingDurationAspect RatioBudgetGross Earnings…Facebook Likes – Actor 1Facebook Likes – Actor 2Facebook Likes – Actor 3Facebook Likes – cast TotalFacebook likes – MovieFacenumber in postersUser VotesReviews by UsersReviews by CrtiicsIMDB Score

0Intolerance: Love’s Struggle Throughout the Ages1916Drama|History|WarNaNUSANot Rated1231.33385907NaN…43622948169111071888698

1Over the Hill to the Poorhouse1920Crime|DramaNaNUSANaN1101.331000003000000…2204015114.8

2The Big Parade1925Drama|Romance|WarNaNUSANot Rated1511.33245000NaN…811261082260484945488.3

3Metropolis1927Drama|Sci-FiGermanGermanyNot Rated1451.33600000026435…13623182031200011118414132608.3

4Pandora’s Box1929Crime|Drama|RomanceGermanGermanyNot Rated1101.33NaN9950…4262034559261743184718

Excel文件通常具有多个工作表,并且读取特定工作表或全部工作表的能力非常重要。 为了使此操作变得容易,pandas read_excel方法采用了一个名为sheetname的参数,该参数告诉pandas从数据中读取哪张纸。 为此,您可以使用工作表名称或工作表编号。 工作表编号从零开始。 如果未指定sheetname参数,则默认为零,pandas将导入第一张图纸。

默认情况下,pandas将自动分配一个从零开始的数字索引或行标签。 如果您的数据没有包含唯一值的列,可以用作更好的索引,则您可能希望保留默认索引。 如果您认为有一个列可以用作更好的索引,则可以通过将index_col属性设置为列来覆盖默认行为。 它使用一个数值来将单个列设置为索引,或者使用数值列表来创建一个多索引。

在下面的代码中,我们通过将零传递给index_col参数来选择第一列“标题”作为索引(index = 0)。

movies_sheet1 = pd.read_excel(excel_file,sheetname=0,index_col=0)

movies_sheet1.head()

YearGenresLanguageCountryContent RatingDurationAspect RatioBudgetGross EarningsDirector…Facebook Likes – Actor 1Facebook Likes – Actor 2Facebook Likes – Actor 3Facebook Likes – cast TotalFacebook likes – MovieFacenumber in postersUser VotesReviews by UsersReviews by CrtiicsIMDB Score

Title

Intolerance: Love’s Struggle Throughout the Ages1916Drama|History|WarNaNUSANot Rated1231.33385907NaND.W. Griffith…43622948169111071888698

Over the Hill to the Poorhouse1920Crime|DramaNaNUSANaN1101.331000003000000Harry F. Millarde…2204015114.8

The Big Parade1925Drama|Romance|WarNaNUSANot Rated1511.33245000NaNKing Vidor…811261082260484945488.3

Metropolis1927Drama|Sci-FiGermanGermanyNot Rated1451.33600000026435Fritz Lang…13623182031200011118414132608.3

Pandora’s Box1929Crime|Drama|RomanceGermanGermanyNot Rated1101.33NaN9950Georg Wilhelm Pabst…4262034559261743184718

如上所述,我们的Excel数据文件分为三页。我们已经阅读了上面的DataFrame中的第一张表。现在,使用相同的语法,我们还将阅读其余两页。

movies_sheet2 = pd.read_excel(excel_file,sheetname=1,index_col=0)

movies_sheet2.head()

YearGenresLanguageCountryContent RatingDurationAspect RatioBudgetGross EarningsDirector…Facebook Likes – Actor 1Facebook Likes – Actor 2Facebook Likes – Actor 3Facebook Likes – cast TotalFacebook likes – MovieFacenumber in postersUser VotesReviews by UsersReviews by CrtiicsIMDB Score

Title

102 Dalmatians2000Adventure|Comedy|FamilyEnglishUSAG1001.858500000066941559Kevin Lima…2000795439418237212641377844.8

28 Days2000Comedy|DramaEnglishUSAPG-131031.374300000037035515Betty Thomas…12000100006642386401345971941166

3 Strikes2000ComedyEnglishUSAR821.8560000009821335DJ Pooh…93970658533541181141510224

Aberdeen2000DramaEnglishUKNaN1061.85650000064148Hans Petter Moland…844208462600260135287.3

All the Pretty Horses2000Drama|Romance|WesternEnglishUSAPG-132202.355700000015527125Billy Bob Thornton…1300086182015006652211388183855.8

movies_sheet3 = pd.read_excel(excel_file,sheetname=2,index_col=0)

movies_sheet3.head()

YearGenresLanguageCountryContent RatingDurationAspect RatioBudgetGross EarningsDirector…Facebook Likes – Actor 1Facebook Likes – Actor 2Facebook Likes – Actor 3Facebook Likes – cast TotalFacebook likes – MovieFacenumber in postersUser VotesReviews by UsersReviews by CrtiicsIMDB Score

Title

127 Hours2010Adventure|Biography|Drama|ThrillerEnglishUSAR941.851800000018329466Danny Boyle…11000642223119846300002791794404507.6

3 Backyards2010DramaEnglishUSAR88NaN300000NaNEric Mendelsohn…795659301188492055423205.2

32010Comedy|Drama|RomanceGermanGermanyUnrated1192.35NaN59774Tom Tykwer…242096920000421218766.8

8: The Mormon Proposition2010DocumentaryEnglishUSAR801.78250000099851Reed Cowan…19112521000113830287.1

A Turtle’s Tale: Sammy’s Adventures2010Adventure|Animation|FamilyEnglishFrancePG882.35NaNNaNBen Stassen…783749602387402538522566.1

由于所有三个工作表都具有相似的数据,但记录运动不同,因此我们将根据上面创建的所有三个数据帧创建一个单独的DataFrame。 为此,我们将使用pandas concat方法,并传入刚刚创建的三个DataFrame的名称,并将结果分配给新的DataFrame对象(电影)。 通过保持DataFrame名称与以前相同,我们将覆盖先前创建的DataFrame。

movies= pd.concat([movies_sheet1, movies_sheet2, movies_sheet3])

我们可以通过在组合的DataFrame中调用行的形状来检查组合的DataFrame中的行数,从而检查此串联,从而获得行数和列数。

movies.shape

(5042,24)

使用ExcelFile类读取多张工作表

我们还可以使用ExcelFile类来处理来自同一Excel文件的多个工作表。我们首先使用ExcelFile包装Excel文件,然后将其传递给read_excel方法。

xlsx = pd.ExcelFile(excel_file)

movies_sheets = []

for sheet in xlsx.sheet_names:

movies_sheets.append(xlsx.parse(sheet))

movies = pd.concat(movies_sheets)

如果您正在读取包含大量表单的Excel文件并创建大量DataFrame,则与read_excel相比,ExcelFile更加便捷高效。 使用ExcelFile,您只需传递一次Excel文件,然后就可以使用它来获取DataFrame。 使用read_excel时,每次都会传递Excel文件,因此会为每张纸再次加载该文件。 如果Excel文件中包含许多行数很多的工作表,这可能会极大地拖累性能。

探索数据

获取有关数据的统计信息

读取没有标题的文件并跳过记录

读取列的子集

在列上应用公式

Pandas数据透视表

将结果导出到Excel

结论


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部