计算唯一值

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

假设我们有如下 DataFrame:

>>> frame_data = {'A': [23, 12, 12], 'B': [18, 18, 22], 'C': [13, 112, 13]}
>>> df = pandas.DataFrame(frame_data)

要计算 A 列中的唯一值:

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

如我们所见,A 列只有两个唯一值 23 和 12,另外一个 12 是重复的。
这就是我们在输出中有 2 的原因。

如果要对一列中的所有值进行计数,可以使用 count() 方法,如下所示:

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

更改列类型

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

>>> df.dtypes

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

>>> df.name = df.name.astype(str)

我们从 DataFrame 中获取列的名称并将其数据类型从对象更改为字符串。

写入 HTML 文件

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

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

将函数应用于列/行

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

考虑以下示例:

>>> frame_data = {'A': [1, 2, 3], 'B': [18, 20, 22], 'C': [54, 12, 13]}
>>> df = pandas.DataFrame(frame_data)

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

>>> import numpy as np
>>> df.apply(np.sqrt)

要应用 sum 函数,代码将是:

>>> df.apply(np.sum)

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

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

读取文本文件

我们也可以使用pandas的read_csv方法来读取一个文本文件;考虑以下示例:

import pandas
pandas.read_csv('myFile.txt')

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

假设我们有一个制表符分隔符

由于 pandas 不知道分隔符,因此它将制表符转换为 \t

要将制表符定义为分隔符,像这样传递分隔符参数:

pandas.read_csv('myFile.txt', delimiter='\t')

写入 CSV

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

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

删除/删除重复项

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

考虑以下示例:

>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 20], 'job': ['Assistant', 'Manager', 'Clerk', 'Manager']}
>>> df = pandas.DataFrame(frame_data)

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

>>> df.duplicated()

要删除重复行,请运行以下代码行:

>>> df.drop_duplicates()

按列删除重复项

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

例如,我们有以下 DataFrame:

>>> frame_data = {'name': ['James', 'Jason', 'Rogers', 'Jason'], 'age': [18, 20, 22, 21], 'job': ['Assistant', 'Manager', 'Clerk', 'Employee']}
>>> df = pandas.DataFrame(frame_data)

如果要按列删除重复项,只需按如下方式传递列名:

>>> df.drop_duplicates(['name'])

对列求和

我们可以使用 DataFrame 的 sum() 方法对列项求和。

假设我们有以下 DataFrame:

>>> frame_data = {'A': [23, 12, 12], 'B': [18, 18, 22], 'C': [13, 112, 13]}
>>> df = pandas.DataFrame(frame_data)

现在要对 A 列的项目求和,请使用以下代码行:

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

也可以使用DataFrame的apply()方法,传入numpy的sum方法对数值求和。

按索引选择行

要按索引选择一行,我们可以使用切片 (:) 运算符或者 df.loc[] 数组。

考虑下面的代码:

>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
>>> df = pandas.DataFrame(frame_data)

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

>>> df.loc[1]

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

>>> df[1:2]

写入 Excel

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

要写入 Excel 工作表,我们必须打开工作表,然后打开 Excel 工作表;我们必须导入 openpyxl 模块。

使用 pip 安装 openpyxl:

pip install openpyxl

考虑以下示例:

>>> import openpyxl
>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
>>> df = pandas.DataFrame(frame_data)
>>> df.to_excel("pandasExcel.xlsx", "Sheet1")

排序值/按列排序

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

创建一个具有整数值的 DataFrame:

>>> frame_data = {'A': [23, 12, 30], 'B': [18, 20, 22], 'C': [54, 112, 13]}
>>> df = pandas.DataFrame(frame_data)

现在对值进行排序:

>>> df.sort_values(by=['A'])

在上面的代码中,值按A列排序。
按多列排序;代码将是:

>>> df.sort_values(by=['A', 'B'])

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

>>> df.sort_values(by=['A'], ascending=False)

删除行

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

假设我们有以下 DataFrame:

>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
>>> df = pandas.DataFrame(frame_data)

要删除名称为 James、年龄为 18 岁且工作为助理的索引为 0 的行,请使用以下代码:

>>> df.drop([0])

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

>>> frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
>>> df = pandas.DataFrame(frame_data, index = ['James', 'Jason', 'Rogers'])

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

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

我们还可以删除一系列行:

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

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

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

>>> df.drop(df.index[-1])

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

按值选择行

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

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

import pandas
frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
df = pandas.DataFrame(frame_data)

在这段代码中,我们使用 pandas 的 DataFrame() 方法创建了一个三列三行的 DataFrame。

要根据值选择一行,请运行以下语句:

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

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

安装Pandas

我们可以使用 pip 在 Python 中安装 Pandas。

在cmd中运行以下命令:

pip install pandas

此外,我们可以像这样使用 conda 安装 pandas:

conda install pandas

读取 SQL

我们可以使用 pandas 的 read_sql() 方法从 SQL 数据库中读取:

import sqlite3
import pandas
con = sqlite3.connect('mydatabase.db')
pandas.read_sql('select * from Employee', con)

在这个例子中,我们连接到一个 SQLite3 数据库,它有一个名为“Employee”的表。

使用 pandas 的 read_sql() 方法,然后我们将查询和连接对象传递给 read_sql() 方法。
查询获取表中的所有数据。

导入 CSV 文件

要读取 CSV 文件,我们可以使用 pandas 的 read_csv() 方法。

导入Pandas 模块:

import pandas

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

pandas.read_csv('Book1.csv')

子集行

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

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

df.[start:count]

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

>>> df[0:3]

该代码意味着从 0 的第一行开始并选择三行。

同样,要选择前两行,则写成:

>>> df[0:2]

要选择或者子集最后一行,请使用负索引作为:

>>> df[-1:]

写入 SQL

要将数据写入 SQL,我们可以使用 to_sql() 方法。
考虑以下示例:

import sqlite3
import pandas
con = sqlite3.connect('mydatabase.db')
frame_data = {'name': ['James', 'Jason', 'Rogers'], 'age': [18, 20, 22], 'job': ['Assistant', 'Manager', 'Clerk']}
df = pandas.DataFrame(frame_data)
df.to_sql('users', con)

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

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

写入 JSON

我们可以使用 DataFrame 的 to_json() 方法写入 JSON 文件:

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

在这行代码中,JSON 文件的名称作为参数传递。
DataFrame 将存储在 JSON 文件中。

读取 Excel 文件

我们可以使用 pandas 的 read_excel() 方法读取 Excel 文件。
为此,我们需要再导入一个名为 xlrd 的模块。
使用 pip 安装 xlrd:

pip install xlrd

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

  • 我们创建了一个 Excel 表,内容如下:
  • 导入Pandas 模块:
import pandas
  • 我们将把 Excel 文件的名称和我们需要从中读取数据的工作表编号传递给 read_excel() 方法。
pandas.read_excel('pandasExcel.xlsx', 'Sheet1')

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

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

它被称为数据帧(DataFrame)!这是我们要处理的Pandas 的基本单位。

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

选择列

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

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

select Name, Job from Employee

pandas 代码语句如下:

pandas.read_sql('select Name, Job from Employee', con)

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

x = pandas.read_sql('select * from Employee', con)
x['Name']
Python pandas DataFrames示例

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

它在数据表示、过滤和统计编程方面是一个非常有前途的库。
Pandas 中最重要的部分是 DataFrame,我们可以其中存储和处理数据。

删除列

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

考虑以下示例:

>>> df.drop(['job'], axis=1)

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

日期:2020-07-15 11:16:25 来源:oir作者:oir