计算唯一值
要计算列中的唯一值,我们可以使用 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']
Pandas 是一个开源 Python 库,可在 Python 编程中提供数据分析和操作。
它在数据表示、过滤和统计编程方面是一个非常有前途的库。
Pandas 中最重要的部分是 DataFrame,我们可以其中存储和处理数据。
删除列
要删除整个列或者行,我们可以通过指定列或者行的名称来使用 DataFrame 的 drop() 方法。
考虑以下示例:
>>> df.drop(['job'], axis=1)
在这行代码中,我们将删除名为“job”的列,这里需要axis参数。
如果axis值为 1,则表示我们要删除列。
如果axis值为 0,则表示该行将被删除。