《PySpark大数据分析实战》-23.Pandas介绍DataFrame介绍

2024-01-03 14:29:42

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏??+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-23.Pandas介绍DataFrame介绍

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第3章第2节的内容:Pandas介绍DataFrame介绍。

图书在:当当京东机械工业出版社以及各大书店有售!

数据分析库Pandas介绍

Pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。它基于NumPy库构建,使数据操作变得更加简单、快速和直观。Pandas 适用于处理以下类型的数据:

  • 与SQL或Excel表类似的,含异构列的表格数据。
  • 有序和无序(非固定频率)的时间序列数据。
  • 带行列标签的矩阵数据,包括同构或异构型数据。
  • 任意其它形式的观测、统计数据集,数据转入Pandas数据结构时不必事先标记。

要在项目中使用Pandas,需要在Python环境中安装Pandas,命令如下:

$ pip install pandas

在使用时需要在Python脚本中导入pandas,代码如下:

import pandas as pd

Pandas主要提供了两种数据结构:Series和DataFrame。

DataFrame介绍

DataFrame是一种二维的表格型数据结构,类似于SQL表或Excel表格。Pandas数据结构就像是低维数据的容器,比如DataFrame是Series的容器,Series则是标量的容器。使用这种方式,可以在容器中以字典的形式插入或删除对象。一个DataFrame对象可以被视为由许多Series对象组成的字典。

创建对象

Pandas支持通过二维数组、Series、读取本地文件等方式创建DataFrame,创建DataFrame时支持指定行标签和列标签。

在下面的案例中,通过不同的方式创建DataFrame,代码如下:

df1 = pd.DataFrame(np.random.randint(0, 10, (2, 2)), index=['r1', 'r2'], columns=['c1', 'c2'])
print("通过二维数组创建并指定行列标签:\n", df1)

name = pd.Series(['Tom', 'Jack'], name='name')
age = pd.Series([25, 32], name='age')
gender = pd.Series(['F', 'M'], name='gender')
df2 = pd.concat([name, age, gender], axis=1)
print("通过Series创建:\n", df2)

df3 = pd.read_csv("../../../Datasets/AvatarWaterComments.csv")
print("通过读取文件创建:\n", df3.shape)

执行代码,输出结果如下:

通过二维数组创建并指定行列标签:
     c1  c2
r1   5   8
r2   0   7
通过Series创建:
    name  age gender
0   Tom   25      F
1  Jack   32      M
通过读取文件创建:
 (1193, 7)
访问数据

DataFrame对象的每一列可以被当做一个Series对象来访问,可以使用列标签或列名称来访问某一列。

DataFrame对象的每一行可以使用行标签或行索引来访问。在下面的案例中,实现根据标签和索引访问数据,代码如下:

print("通过列标签访问:\n", df1["c1"])
print("通过列名称访问:\n", df1.c1)
print("通过行标签访问:\n", df1.loc["r1"])
print("通过行索引访问:\n", df1.iloc[0])
print("抽样前几行数据:\n", df2.head(1))
print("抽样后几行数据:\n", df2.tail(1))

执行代码,输出结果如下:

通过列标签访问:
 r1    5
r2    0
Name: c1, dtype: int32
通过列名称访问:
 r1    5
r2    0
Name: c1, dtype: int32
通过行标签访问:
 c1    5
c2    8
Name: r1, dtype: int32
通过行索引访问:
 c1    5
c2    8
Name: r1, dtype: int32
抽样前几行数据:
   name  age gender
0  Tom   25      F
抽样后几行数据:
    name  age gender
1  Jack   32      M
数据运算

DataFrame对象可以进行各种运算,例如算术运算、逻辑运算、数学运算等。DataFrame对象的运算方式和Series对象类似,可以根据标签自动对齐值。在下面的案例中,创建了两个DataFrame并进行数据运算,代码如下:

df4 = pd.DataFrame([[1, 5], [7, 2]], index=['r1', 'r2'], columns=['c1', 'c2'])
df5 = pd.DataFrame([[4, 6], [3, 8]], index=['r2', 'r3'], columns=['c1', 'c3'])

print("乘法运算:\n", df4 * 2)
print("加法运算:\n", df4 + df5)
print("逻辑运算:\n", df4 > 4)
print("数学运算:\n", df4.mean())

执行代码,输出结果如下:

乘法运算:
     c1  c2
r1   2  10
r2  14   4
加法运算:
       c1  c2  c3
r1   NaN NaN NaN
r2  11.0 NaN NaN
r3   NaN NaN NaN
逻辑运算:
        c1     c2
r1  False   True
r2   True  False
数学运算:
 c1    4.0
c2    3.5
dtype: float64

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

文章来源:https://blog.csdn.net/wux_labs/article/details/135361704
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。