📋 博主简介
- 💖 作者简介:大家好,我是wux_labs。😜
热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。- 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
- 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
- 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥
《PySpark大数据分析实战》-23.Pandas介绍DataFrame介绍
- 《PySpark大数据分析实战》-23.Pandas介绍DataFrame介绍
- 前言
- 数据分析库Pandas介绍
- DataFrame介绍
- 创建对象
- 访问数据
- 数据运算
- 结束语
《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
结束语
好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。