Python Pandas教程:DataFrames入门

Pandas是一个开源Python库,它在Python编程中提供数据分析和操作

它是数据表示,过滤和统计编程中非常有前途的库。Pandas中最重要的部分是DataFrame,您可以在其中存储和播放数据。

在本教程中,您将了解DataFrame是什么,如何从不同的源创建它,如何将其导出到不同的输出,以及如何操作其数据。

安装熊猫

您可以使用pip在Python中安装Pandas 在cmd中运行以下命令:

pip install pandas

1-install-pandas.png

此外,您可以使用conda安装Pandas,如下所示:

conda install pandas 

阅读Excel文件

您可以使用read_excel() Pandas中方法从Excel文件中读取  为此,您需要再导入一个名为xlrd的模块。

使用pip安装xlrd:

pip install xlrd 

2-install-xlrd.png

下面的示例演示了如何从Excel工作表中读取:

  1. 我们创建了一个包含以下内容的Excel工作表:3-Excel-sheet.png

  2. 导入Pandas模块: import pandas 

上面的代码片段将生成以下输出:

4-Read-Excel-file.png

如果使用type关键字检查输出的类型,它将为您提供以下结果:

< 类 'pandas.core.frame.DataFrame' >

这称为DataFrame这是我们将在本教程中处理的Pandas的基本单元。

DataFrame是一个带标签的二维结构,我们可以存储不同类型的数据。DataFrame类似于SQL表或Excel电子表格。

导入CSV文件

要从CSV文件中读取,您可以使用read_csv() Pandas 的  方法。

导入pandas模块: import pandas 

现在调用  read_csv() 方法如下:

Book1.csv具有以下内容:

5-CSV-file.png

该代码将生成以下DataFrame:

6-Import-CSV-file.png

阅读文本文件

我们也可以使用read_csv Pandas 的  方法从文本文件中读取; 考虑以下示例:

进口 大熊猫
 
大熊猫。read_csv('myFile.txt')

myFile.txt如下所示:

7-Text-file.png

上面代码的输出将是:

图片标题

此文本文件被视为CSV文件,因为我们使用逗号分隔的元素。该文件还可以使用其他分隔符,例如分号,制表符等。

假设我们有一个制表符分隔符,文件如下所示:

10-Tab-delimited-file.png

当分隔符是制表符时,我们将得到以下输出:

9-Read-text-file-with-tab-delimiter.png

由于Pandas不知道分隔符,因此它将选项卡转换为\t

要将制表符定义为分隔符,请传递分隔符参数,如下所示:

大熊猫。read_csv('myFile.txt',delimiter = '\ t')

现在输出将是:

11-Specify-tab-delimiter.png

现在看起来正确。

阅读SQL

您可以使用read_sql() Pandas 的  方法从SQL数据库中读取。这在以下示例中进行了演示:

import  sqlite3
 
进口 大熊猫
 
con = sqlite3。connect('mydatabase.db')
 
大熊猫。read_sql('select * from Employee',con)

在此示例中,我们连接到一个SQLite3数据库,该数据库具有名为“Employee”的表。使用read_sql()  Pandas 的  方法,然后我们将查询和连接对象传递给该  read_sql()  方法。查询将获取表中的所有数据。

我们的Employee表如下所示:

12-SQLite3-table.png

运行上面的代码时,输出将如下所示:

13-Read-SQL-using-pandas.png

选择列

假设我们在Employee表中有三列,如下所示:

14-SQLite3-table-columns.png

要从表中选择列,我们将传递以下查询:

从员工中选择姓名,工作

Pandas代码声明如下:

大熊猫。read_sql('select Name,Job from Employee',con)

15-use-SQL-to-select-data.png

我们还可以通过访问DataFrame从表中选择一列。请考虑以下示例:

x = 熊猫。read_sql('select * from Employee',con)
 
x [ '姓名' ]

结果如下:

16-Get-columns.png

按值选择行

首先,我们将创建一个DataFrame,我们将从中选择行。

要创建DataFrame,请考虑以下代码:

进口 大熊猫
 
frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ] }
 
df = 熊猫。DataFrame(frame_data)

在这段代码中,我们使用DataFrame() Pandas 方法创建了一个包含三列和三行的DataFrame  结果如下:

17-Make-a-dataframe.png

要基于值选择行,请运行以下语句:

df。loc [ df [ 'name' ] == 'Jason' ]

df.loc[]  或者  DataFrame.loc[] 是一个布尔数组,可用于按值或标签访问行或列。在上面的代码中,将获取行,其中名称等于Jason。

输出将是:

18-Get-rows-by-value-from-a-dataframe.png

选择按索引排序

要通过索引选择行,我们可以使用slicing(:)运算符或  df.loc[] 数组。

请考虑以下代码:

>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

我们创建了一个DataFrame。现在让我们使用df.loc[]以下方法访问一行

>>> df.loc[1] 

19-Get-dataframe-row.png

如您所见,获取了一行。我们可以使用切片运算符执行相同的操作,如下所示:

>>> df[1:2] 

20-dataframe-slicing-operator.png

更改列类型

可以使用astype()  DataFrame 属性更改列的数据类型  要检查列的数据类型,我们使用dtypes DataFrame 的  属性。

>>> df.dtypes

输出将是:

21-Change-column-type.png

现在将数据类型从一个转换为另一个:

>> >  DF。name = df。名字。astype(str)

我们从DataFrame中获取了列'name',并将其数据类型从object更改为string。

将函数应用于列/行

要在列或行上应用函数,可以使用apply() DataFrame 的  方法。

请考虑以下示例:

>> >  frame_data = { 'A':[ 1,2,3 ],'B':[ 18,20,22 ],'C':[ 54,12,13 ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

我们创建了一个DataFrame,并在行中添加了整数类型的值。要在值上应用函数(例如平方根),我们将导入NumPy模块以使用sqrt 它中的  函数,如下所示:

>> >  进口 numpy的 为 NP
 
>> >  DF。申请(NP。开方)

输出如下:

22-Apply-a-function-to-columns.png

要应用该  sum 功能,代码将是:

>>> df.apply(np.sum)

23-Apply-sum-function.png

要将函数应用于特定列,可以像这样指定列:

>>>df['A'].apply(np.sqrt) 

排序值/按列排序

要对DataFrame中的值进行排序,请使用DataFrame的  sort_values() 方法。

使用整数值创建DataFrame:

>> >  frame_data = { 'A':[ 23,12,30 ],'B':[ 18,20,22 ],'C':[ 54,112,13 ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

现在要对值进行排序:

>> >  DF。sort_values(by = [ 'A' ])

输出将是:

24-Sort-values.png

该  sort_values() 方法具有必要的属性“by”。在上面的代码中,值按列A排序。要按多列排序,代码将是:

>> >  DF。sort_values(by = [ 'A','B' ])

如果要按降序排序,请将升序属性设置  set_values 为False,如下所示:

>> >  DF。sort_values(by = [ 'A' ],ascending = False)

输出将是:

25-Sort-in-descending-order.png

删除/删除重复项

要从DataFrame中删除重复行,请使用DataFrame的  drop_duplicates() 方法。

请考虑以下示例:

>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯','杰森' ],'年龄':18,20,22,20 ],'工作':'助理','经理','职员','经理' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

27-Duplicated-dataframe.png

在这里,我们创建了一个具有重复行的DataFrame。要检查DataFrame中是否存在任何重复行,请使用DataFrame的  duplicated() 方法。

结果将是:

26-Duplicate-result.png

可以看出最后一行是重复的。要删除或删除此行,请运行以下代码行:

>> >  DF。drop_duplicates()

现在的结果将是:

28-Remove-duplicates.png按列删除重复项

有时,我们有数据列的值相同,我们希望删除它们。我们可以通过传递我们需要删除的列的名称来逐行删除。

例如,我们有以下DataFrame:

>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯','杰森' ],'年龄':18,20,22,21 ],'工作':'助理','经理','职员','员工' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

29-Pandas-dataframe-with-duplicate-data.png

在这里你可以看到Jason是两次。如果要按列删除重复项,只需传递列名称,如下所示:

>> >  DF。drop_duplicates([ 'name' ])

结果如下:

30-Drop-duplicates-by-column.png

删除列

要删除整个列或行,我们可以drop() 通过指定列或行的名称来使用DataFrame 的  方法。

请考虑以下示例:

>> >  DF。drop([ 'job' ],axis = 1)

在这行代码中,我们将删除名为“job”的列。这里需要axis参数。如果轴值为1,则表示我们要删除列,如果轴值为0,则表示将删除该行。在轴值中,0表示索引,1表示列。

结果将是:

31-Drop-a-dataframe-column.png

删除行

我们可以使用该  drop() 方法通过传递行的索引来删除或删除行。

假设我们有以下DataFrame:

>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

要删除索引为0的行,其中名称为James,age为18且作业为Assistant,请使用以下代码:

>>> df.drop([0]) 

32-Drop-a-row-by-index.png

让我们创建一个DataFrame,索引是名称:

>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data,index = [ 'James','Jason','Rogers' ])

33-non-labled-dataframe.png

现在我们可以删除具有特定值的行。例如,如果我们要删除名称为Rogers的行,则代码将为:

>>> df.drop(['Rogers']) 

输出将是:

34-Drop-a-row-by-value.png

您还可以删除一系列行:

>>> df.drop(df.index[[0, 1]]) 

这将删除从索引0到1的行以及仅剩下一行,因为我们的DataFrame由3行组成:

35-Drop-a-range.png

如果要从DataFrame中删除最后一行并且不知道总行数是多少,那么可以使用负索引,如下所示:

-1删除最后一行。同样-2将删除最后2行,依此类推。

36-Drop-the-last-row.png

总结一列

您可以使用sum() DataFrame 的  方法对列项进行求和。

假设我们有以下DataFrame:

>> >  frame_data = { 'A':[ 23,12,12 ],'B':[ 18,18,22 ],'C':[ 13,112,13 ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

现在总结A列的项目,使用以下代码行:

>>> df['A'].sum() 

37-Sum-a-column.png

您还可以使用apply() DataFrame 的  方法并传入NumPy的sum方法来对值进行求和。

计算唯一值

要计算列中的唯一值,可以使用nunique() DataFrame 的  方法。

假设我们有如下的DataFrame:

>> >  frame_data = { 'A':[ 23,12,12 ],'B':[ 18,18,22 ],'C':[ 13,112,13 ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)

要计算A列中的唯一值:

>>> df['A'].nunique()

图片标题

如您所见,A列只有2个唯一值23和12,另外12个是重复,这就是为什么我们在输出中有2个。

如果要计算列中的所有值,可以使用以下  count() 方法:

>>> df['A'].count() 

39-Count-column-values.png

子集行

要选择DataFrame的子集,可以使用方括号。

例如,我们有一个包含一些整数的DataFrame。我们可以像这样选择或分配一行:

df.[start:count] 

起点将包含在子集中,但不包括停止点。例如,要从第一行开始选择3行,您将编写:

>>> df[0:3] 

输出将是:

40-Get-subset-of-rows.png

该代码表示从第一行开始,该行为0并选择3行。

同样,要选择前两行,您将编写:

>>> df[0:2] 

41-Get-2-rows-from-a-dataframe.png

要选择或子集最后一行,请使用否定索引:

>>> df[-1:] 

42-Get-last-row.png

写入Excel

要将DataFrame写入Excel工作表,我们可以使用该  to_excel() 方法。

要写入Excel工作表,您必须打开工作表并打开Excel工作表,我们必须导入openpyxl模块。

使用pip安装openpyxl:

pip install openpyxl 

43-Install-openpyxl.png

请考虑以下示例:

>> >  进口 openpyxl
 
>> >  frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ]}
 
>> >  DF = 大熊猫。DataFrame(frame_data)
 
>> >  DF。to_excel(“pandasExcel.xlsx”,“Sheet1”)

Excel文件如下所示:

44-Write-to-Excel.png

写入CSV

同样,要将DataFrame写入CSV,您可以使用to_csv() 以下代码行中的  方法:

>>> df.to_csv("pandasCSV.csv")

输出文件如下所示:

45-Write-to-CSV.png

写入SQL

要将数据写入SQL,我们可以使用该  to_sql() 方法。

请考虑以下示例:

import  sqlite3
 
进口 大熊猫
 
con = sqlite3。connect('mydatabase.db')
 
frame_data = { '名':'詹姆斯','贾森','罗杰斯' ],'年龄':18,20,22 ],'工作':'助理','经理','职员' ] }
 
df = 熊猫。DataFrame(frame_data)
 
df。to_sql('users',con)

在此代码中,我们创建了与SQLite3数据库的连接。然后我们创建了一个包含三行三列的DataFrame。

最后,我们使用to_sql 了DataFrame(df的  方法,并传递了数据将与连接对象一起存储的表的名称。

SQL数据库将如下所示:

46-Write-to-SQL.png

写信给JSON

您可以使用to_json() DataFrame 的  方法写入JSON文件。

这在以下示例中进行了演示:

>>> df.to_json("myJson.json")

在这行代码中,JSON文件的名称作为参数传递。DataFrame将存储在JSON文件中。该文件将包含以下内容:

47-Write-to-JSON.png

写入HTML文件

您可以使用to_html() DataFrame 的  方法创建包含DataFrame内容的HTML文件。

请考虑以下示例:

>>> df.to_html("myhtml.html") 

结果文件将包含以下内容:

48-Write-to-html.png

在浏览器中打开HTML文件时,它将如下所示:

49-Html-file-output.png

使用大熊猫非常容易。这就像使用Excel工作表一样!Pandas DataFrame也是一个非常灵活的库。

我希望你发现这个教程很有用。继续回来。


猜你喜欢

转载自blog.51cto.com/14009535/2383294