30天拿下Python之pandas模块

简介: 30天拿下Python之pandas模块

概述

在上一节,我们介绍了Python的numpy模块,包括:多维数组、数组索引、数组操作、数学函数、线性代数、随机数生成等内容。在这一节,我们将介绍Python的pandas模块。pandas模块是Python编程语言中用于数据处理和分析的强大模块,它提供了许多用于数据操作和清洗的函数,使得数据处理和分析变得更为简单和直观。

在Python中使用pandas模块,需要先安装pandas库。可以通过pip命令进行安装:pip install -i  https://pypi.tuna.tsinghua.edu.cn/simple pandas。安装完成后,就可以在Python脚本中导入pandas模块,并使用其函数和方法了。

Series

Series是一个一维数组,它不仅包含数据,还包含索引。Series可以被看作是一个字典,其中的索引是键,值是数据。每个索引只有一个对应的值,因此Series可以被看作是具有标签化的数值数据。

import pandas as pd
# 创建一个Series
s = pd.Series([1, 2, 3, 4, 5])
# 输出:
# 0    1
# 1    2
# 2    3
# 3    4
# 4    5
# dtype: int64
print(s)


上面的示例代码创建了一个包含五个整数的Series,默认情况下,它的索引是从0开始的整数。

当然,我们也可以提供一个列表作为Series的索引和值。

import pandas as pd
# 创建一个带有自定义索引和值的Series
index = ['C', 'S', 'D', 'N', 'P']
s = pd.Series([1, 2, 3, 4, 5], index = index)
# 输出:
# C    1
# S    2
# D    3
# N    4
# P    5
# dtype: int64
print(s)


我们还可以直接使用字典创建带有自定义数据标签的数据,pandas会自动把字典的键作为数据标签,字典的值作为相对应的数据。

import pandas as pd
# 创建一个带有自定义索引和值的Series
s = pd.Series({'C': 1, 'S': 2, 'D': 3, 'N': 4, 'P': 5})
# 输出:
# C    1
# S    2
# D    3
# N    4
# P    5
# dtype: int64
print(s)


如果想访问Series里的数据,也非常简单,直接使用中括号加数据标签的方式即可。

import pandas as pd
s = pd.Series([1, 2, 3, 4, 5])
# 访问第二个元素,输出:3
print(s[2])
s = pd.Series({'C': 1, 'S': 2, 'D': 3, 'N': 4, 'P': 5})
# 访问Key值为'D'的元素,输出:3
print(s['D'])


使用Series,结合pandas强大的数据对齐功能,可以让我们快速对数据进行分析和处理。

import pandas as pd
s1 = pd.Series({'Red': 1, 'Blue': 2, 'Green': 3})
s2 = pd.Series({'Red': 100, 'Blue': 200, 'Green': 300})
s = s1 + s2
# 将两个Series进行相加,输出:
# Red      101
# Blue     202
# Green    303
# dtype: int64
print(s)
s1 = pd.Series({'Red': 1, 'Blue': 2, 'Green': 3, 'White': 4})
s2 = pd.Series({'Red': 100, 'Blue': 200, 'Green': 300})
s = s1 + s2
# 数据标签不相同的数据,运算后结果是NaN,输出:
# Blue     202.0
# Green    303.0
# Red      101.0
# White      NaN
# dtype: float64
print(s)
# 数据标签不相同的数据,调用add函数,可以设置默认填充值,输出:
# Blue     202.0
# Green    303.0
# Red      101.0
# White      4.0
# dtype: float64
s = s1.add(s2, fill_value = 0)
print(s)

DataFrame

DataFrame是一个二维的表格型数据结构,类似于Excel或数据库中的表。DataFrame中的数据可以是不同的数据类型,比如:整数、浮点数、字符串、布尔值等。

import pandas as pd
# 创建DataFrame
data = {'Name': ['Jack', 'Tank', 'John'], 'Age': [20, 21, 19]}
df = pd.DataFrame(data)
# 输出:
#    Name  Age
# 0  Jack   20
# 1  Tank   21
# 2  John   19
print(df)


使用DataFrame,我们可以很方便地对表中的行、列进行增删改查等操作。使用df['column_name']可以查看指定列的数据;使用df.iloc[row_number]可以查看指定行的数据;使用df.loc[row_label]可以基于标签访问指定行的数据;使用df[condition]可以筛选出满足条件的数据:使用df['new_column'] = values可以添加一个新列;使用del df['column_name']可以删除一列。

import pandas as pd
# 创建DataFrame
data = {'Name': ['Jack', 'Tank', 'John'], 'Age': [20, 21, 19]}
df = pd.DataFrame(data)
# 输出:
#    Name  Age
# 0  Jack   20
# 1  Tank   21
# 2  John   19
print(df)
df = pd.DataFrame(data, index = ['First', 'Second', 'Third'])
# 指定自定义索引,输出:
#         Name  Age
# First   Jack   20
# Second  Tank   21
# Third   John   19
print(df)
# 访问列数据,输出:
# First     Jack
# Second    Tank
# Third     John
# Name: Name, dtype: object
print(df['Name'])
# 根据行索引访问行数据,输出:
# Name    John
# Age       19
# Name: Third, dtype: object
print(df.iloc[2])
# 根据行标签访问行数据,输出:
# Name    John
# Age       19
# Name: Third, dtype: object
print(df.loc['Third'])
df['Age'] = [22, 18, 20]
# 修改列数据,输出:
#         Name  Age
# First   Jack   22
# Second  Tank   18
# Third   John   20
print(df)
df['Gender'] = ['M', 'F', 'F']
# 新增列数据,输出:
#         Name  Age Gender
# First   Jack   22      M
# Second  Tank   18      F
# Third   John   20      F
print(df)
del df['Gender']
# 删除列数据,输出:
#         Name  Age
# First   Jack   22
# Second  Tank   18
# Third   John   20
print(df)
# 筛选出年龄大于20的数据,输出:
#        Name  Age
# First  Jack   22
print(df[df['Age'] > 20])

数据读取和写入

使用pandas,可以方便地读取和写入各种数据格式,比如:CSV、Excel、SQL数据库等。我们以CSV文件的读写为例,来理解CSV表格数据的读取和写入。

import pandas as pd
# 创建DataFrame
data = {'Name': ['Jack', 'Tank', 'John'], 'Age': [20, 21, 19]}
df = pd.DataFrame(data)
# 将DataFrame写入CSV文件
df.to_csv('output.csv', index = False)


在上面的示例代码中,我们首先创建了一个名为df的DataFrame,然后使用to_csv函数将其写入一个名为output.csv的CSV文件中。我们将index参数设置为False,以避免将DataFrame的索引写入CSV文件。

to_csv函数还有其他一些可选参数,包括:

sep:用于指定CSV文件中的分隔符,默认是逗号。

header:用于指定是否将DataFrame的列名写入CSV文件中,默认为True。

encoding:用于指定文件的编码格式,默认为UTF-8。

compression:用于指定文件的压缩格式,默认为None。

在下面的示例代码中,我们读取了上面保存的名为output.csv的CSV文件,并将其转化为一个pandas DataFrame。

import pandas as pd
# 从CSV文件读取  
df = pd.read_csv('output.csv')
# 输出:
#    Name  Age
# 0  Jack   20
# 1  Tank   21
# 2  John   19
print(df)


read_csv函数还有其他一些可选参数,包括:

sep:指定分隔符,默认为逗号。

header:指定行号作为列名,默认为0。

index_col:将一列或多列设为DataFrame的索引。

usecols:返回的列的子集,可以是一个列表或函数。

dtype:为每一列设置数据类型。

skiprows:跳过指定的行数或行号。

na_values:用于识别空值的字符串或字符串列表。

keep_default_na:是否保留默认的识别空值的字符串。


相关文章
|
4月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
163 62
|
1天前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
23 8
|
13天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
20 3
|
3月前
|
Python
Python Internet 模块
Python Internet 模块。
138 74
|
4月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
145 63
|
4月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
4月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
138 61
|
4月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
2月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
55 2
|
4月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。

热门文章

最新文章