【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作

简介: 【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作

Pandas数据选择和操作

       Pandas是一个Python库,用于数据分析和操作,提供了丰富的功能来选择、过滤、添加、删除和修改数据。

1 选择列和行

Pandas 提供了多种方式来选择行和列,这取决于您希望获取的数据的类型和结构。

1.1 选择列

(1)使用列标签

使用列标签来选择一个或多个列。您可以将列标签传递给 DataFrame 的索引器,例如 []

(2)使用 .loc[] 方法

.loc[] 方法可以根据标签名称选择行和列。对于列选择,可以使用 : 选择所有行。

1.2 选择行

(1)使用行索引

使用行索引来选择一个或多个行。您可以使用 .loc[] 方法或 .iloc[] 方法。

(2)使用 .iloc[] 方法

.iloc[] 方法使用整数位置来选择行和列。它与 .loc[] 方法的不同之处在于,它使用整数索引而不是标签。

示例代码:

import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# 选择单个列
column_A = df['A']
print("单个列 'A':\n", column_A)
# 结果:
# 单个列 'A':
# 0    1
# 1    2
# 2    3
# Name: A, dtype: int64
# 选择多个列
columns_AB = df[['A', 'B']]
print("多个列 'A' 和 'B':\n", columns_AB)
# 结果:
# 多个列 'A' 和 'B':
#    A  B
# 0  1  4
# 1  2  5
# 2  3  6
# 使用 .loc[] 选择列
column_A_loc = df.loc[:, 'A']
print("使用 .loc[] 选择列 'A':\n", column_A_loc)
# 结果:
# 使用 .loc[] 选择列 'A':
# 0    1
# 1    2
# 2    3
# Name: A, dtype: int64
# 选择多个列
columns_AB_loc = df.loc[:, ['A', 'B']]
print("使用 .loc[] 选择多个列 'A' 和 'B':\n", columns_AB_loc)
# 结果:
# 使用 .loc[] 选择多个列 'A' 和 'B':
#    A  B
# 0  1  4
# 1  2  5
# 2  3  6
# 使用 .loc[] 选择单个行
row_0_loc = df.loc[0]
print("使用 .loc[] 选择单个行 (索引 0):\n", row_0_loc)
# 结果:
# 使用 .loc[] 选择单个行 (索引 0):
# A    1
# B    4
# C    7
# Name: 0, dtype: int64
# 使用 .loc[] 选择多个行
rows_01_loc = df.loc[0:1]
print("使用 .loc[] 选择多个行 (索引 0 到 1):\n", rows_01_loc)
# 结果:
# 使用 .loc[] 选择多个行 (索引 0 到 1):
#    A  B  C
# 0  1  4  7
# 1  2  5  8
# 使用 .iloc[] 选择单个行
row_0_iloc = df.iloc[0]
print("使用 .iloc[] 选择单个行 (整数位置 0):\n", row_0_iloc)
# 结果:
# 使用 .iloc[] 选择单个行 (整数位置 0):
# A    1
# B    4
# C    7
# Name: 0, dtype: int64
# 使用 .iloc[] 选择多个行
rows_01_iloc = df.iloc[0:2]
print("使用 .iloc[] 选择多个行 (整数位置 0 到 1):\n", rows_01_iloc)
# 结果:
# 使用 .iloc[] 选择多个行 (整数位置 0 到 1):
#    A  B  C
# 0  1  4  7
# 1  2  5  8
# 混合选择行和列
subset = df.loc[0:1, ['A', 'B']]
print("选择特定的行和列:\n", subset)
# 结果:
# 选择特定的行和列:
#    A  B
# 0  1  4
# 1  2  5

2 过滤数据

       在Pandas中,您可以使用不同的方法来过滤数据,根据特定条件筛选出满足条件的数据。以下是一些过滤数据的示例和方法:

2.1 基于条件的过滤

通过创建一个条件表达式,您可以选择DataFrame中满足条件的行。

import pandas as pd
data = {'A': [1, 2, 3, 4, 5],
        'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)
# 选择满足条件的行,例如 'A' 列大于 3 的行
filtered_data = df[df['A'] > 3]
print(filtered_data)

输出结果:

   A   B
3  4  40
4  5  50

2.2 使用多个条件

您可以组合多个条件,使用 &(与)和 |(或)等逻辑运算符。

# 选择同时满足多个条件的行,例如 'A' 列大于 2 且 'B' 列小于 30 的行
filtered_data = df[(df['A'] > 2) & (df['B'] < 30)]
print(filtered_data)

输出结果:

   A   B
2  3  30

2.3 使用 isin() 进行筛选

您可以使用 isin() 方法来筛选出匹配指定值的行。

# 选择 'A' 列中匹配特定值的行
filtered_data = df[df['A'].isin([2, 4])]
print(filtered_data)

输出结果:

   A   B
1  2  20
3  4  40

2.4 使用字符串方法

如果您的数据包含字符串列,您可以使用字符串方法进行过滤。

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40]}
df = pd.DataFrame(data)
# 选择包含特定字符串的行
filtered_data = df[df['Name'].str.contains('b', case=False)]
print(filtered_data)

输出结果:

   Name  Age
1   Bob   30

3 添加、删除和修改数据

3.1 添加数据

(1)添加行

       要向 DataFrame 添加新行,通常可以创建一个新的数据项,然后将其附加到 DataFrame。这可以使用 append 方法来完成。确保设置 ignore_index=True 来重置索引。

(2)添加列

       要添加新列,只需分配一个新的列名并提供相应的数据。这样可以在 DataFrame 中增加新的列,以便存储额外的信息。

3.2 删除数据

(1)删除行

       使用 drop 方法可以删除指定的行。您可以指定要删除的行的索引或标签,并使用 axis=0 参数来表示删除行。

(2)删除列

       要删除列,使用 drop 方法并设置 axis=1 参数,然后指定要删除的列名。这将允许您从 DataFrame 中移除不需要的列。

3.3 修改数据

(1)修改特定单元格的值

       要修改 DataFrame 中特定单元格的值,您可以使用 .loc[] 方法,通过指定行和列的标签或索引,来更新该单元格的值。

.

(2)更新多个值

       要批量更新数据,通常可以使用条件来选择要更新的行,然后赋予新的值。这可以帮助您一次性更新多个数据点,而不必一个一个手动修改。

3.4 代码示例

import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 添加新行
new_row = pd.Series({'Name': 'David', 'Age': 40})
df = df.append(new_row, ignore_index=True)
# 结果: 
#    Name  Age
# 0  Alice   25
# 1    Bob   30
# 2 Charlie   35
# 3  David   40
# 添加新列
df['City'] = ['New York', 'Los Angeles', 'Chicago', 'Houston']
# 结果: 
#    Name  Age         City
# 0  Alice   25     New York
# 1    Bob   30  Los Angeles
# 2 Charlie   35      Chicago
# 3  David   40      Houston
# 删除行
df = df.drop(2)  # 删除索引为2的行
# 结果: 
#    Name  Age         City
# 0  Alice   25     New York
# 1    Bob   30  Los Angeles
# 3  David   40      Houston
# 删除列
df = df.drop('City', axis=1)  # 删除名为 'City' 的列
# 结果: 
#    Name  Age
# 0  Alice   25
# 1    Bob   30
# 3  David   40
# 修改特定单元格的值
df.loc[1, 'Age'] = 31
# 结果: 
#    Name  Age
# 0  Alice   25
# 1    Bob   31
# 3  David   40
# 更新多个值
df.loc[df['Age'] > 30, 'Age'] = 32  # 更新年龄大于30的行的年龄为32
# 结果: 
#    Name  Age
# 0  Alice   25
# 1    Bob   32
# 3  David   32
# 输出最终结果
print(df)

4 数据排序

       在 Pandas 中,您可以使用 sort_values() 方法对 DataFrame 中的数据进行排序。以下是有关如何进行列排序、包括升序和降序排序,以及如何按多列进行排序。

4.1  按列排序

要按列对数据进行排序,首先选择要排序的列名称,并使用 sort_values() 方法进行操作。默认情况下,数据将按升序排序。

  • 升序排序:使用 sort_values(by='列名'),其中 '列名' 是您要排序的列的名称。例如,df.sort_values(by='Age') 将按 'Age' 列的升序进行排序。
  • 降序排序:要按降序排序,可以使用 sort_values(by='列名', ascending=False),其中 '列名' 是您要排序的列的名称。例如,df.sort_values(by='Age', ascending=False) 将按 'Age' 列的降序进行排序。

4.2 按多列排序

 如果需要按多列进行排序,您可以通过提供列名称的列表来实现。首先,按列表中的第一个列名进行排序,然后按照列表中的下一个列名进行排序。

       例如,要按 'City' 列升序排序,然后按 'Age' 列升序排序,您可以使用 sort_values(by=['City', 'Age'])。

4.3 重置索引

       请注意,排序后的 DataFrame 可能会保留之前的索引顺序。如果希望重新设置索引以匹配新的排序顺序,可以使用 reset_index(drop=True) 方法来删除旧的索引并创建一个新的整数索引。

4.4 代码示例

import pandas as pd
# 创建一个示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
        'Age': [25, 30, 35, 40],
        'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']}
df = pd.DataFrame(data)
# 按列排序
# 默认按升序排序
df_sorted = df.sort_values(by='Age')
# 按照 'Age' 列的升序排序
print("按 'Age' 列的升序排序:\n", df_sorted)
# 按照 'Age' 列的降序排序
df_sorted_desc = df.sort_values(by='Age', ascending=False)
print("\n按 'Age' 列的降序排序:\n", df_sorted_desc)
# 按多列排序
# 先按 'City' 列升序排序,再按 'Age' 列升序排序
df_multi_sorted = df.sort_values(by=['City', 'Age'])
print("\n按 'City' 列和 'Age' 列的升序排序:\n", df_multi_sorted)
# 恢复索引
df_multi_sorted = df_multi_sorted.reset_index(drop=True)
print("\n重置索引后的 DataFrame:\n", df_multi_sorted)

这个示例演示了如何在 Pandas 中按列对数据进行排序,包括升序和降序排序以及按多列排序。您还可以使用 reset_index() 方法来重置排序后的 DataFrame 的索引。


目录
相关文章
|
10天前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
205 1
|
11天前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
103 0
|
11天前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
199 0
|
12天前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
20天前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
1月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
2月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
176 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
283 1
|
11月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
325 0

热门文章

最新文章

推荐镜像

更多