📋 博主简介
- 💖 作者简介:大家好,我是wux_labs。😜
热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。- 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
- 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
- 🎉 请支持我:欢迎大家 点赞👍+收藏??+吐槽📝,您的支持是我持续创作的动力~🔥
大家好!今天为大家分享的是《PySpark大数据分析实战》第3章第2节的内容:Pandas介绍Series介绍。
Pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。它基于NumPy库构建,使数据操作变得更加简单、快速和直观。Pandas 适用于处理以下类型的数据:
要在项目中使用Pandas,需要在Python环境中安装Pandas,命令如下:
$ pip install pandas
在使用时需要在Python脚本中导入pandas,代码如下:
import pandas as pd
Pandas主要提供了两种数据结构:Series和DataFrame。
Series是一种一维的数据结构,类似于数组和Python中的列表,但是它可以支持不同类型的数据。每个Series对象都由两个数组组成:一个由数据本身组成的数组和一个由标签组成的数组,标签用于标识数据。
可以基于列表或者数据字典来创建Series对象,基于列表创建时,可以为Series数据定义标签,如果不指定标签,则默认用数字作为标签。在下面的案例中,分别用不同方式创建了Series对象,代码如下:
# 不指定标签创建Series,默认使用数字作为标签
ser1 = pd.Series([1, 3, 5])
# 指定标签创建Series
ser2 = pd.Series([1, 3, 5], index=['a', 'b', 'c'])
# 基于字典创建Series
ser3 = pd.Series({'A': 1, 'B': 3, 'C': 5})
print(ser1)
print(ser2)
print(ser3)
执行代码,输出结果如下:
0 1
1 3
2 5
dtype: int64
a 1
b 3
c 5
dtype: int64
A 1
B 3
C 5
dtype: int64
其中,左边的元素是Series的标签,右边的元素是Series的数据值。
Series提供了两个属性,index用来访问Series的标签,values用来访问Series的数据值。要获取Series中具体的元素,可以通过标签、位置、切片等方式来获取。在下面的案例中,分别采用不同的方式来获取Series的元素,代码如下:
ser4 = pd.Series([1, 3, 5, 7, 9], index=['a', 'b', 'c', 'e', 'f'])
print("ser4的标签:", ser4.index)
print("ser4的数据:", ser4.values)
print("通过标签b获取数据:", ser4['b'])
print("通过位置1获取数据:", ser4[1])
print("通过切片获取数据:", ser4[1:3])
print("获取不连续的数据:", ser4[[1, 3, 4]])
执行代码,输入内容如下:
ser4的标签: Index(['a', 'b', 'c', 'e', 'f'], dtype='object')
ser4的数据: [1 3 5 7 9]
通过标签b获取数据: 3
通过位置1获取数据: 3
通过切片获取数据: b 3
c 5
dtype: int64
获取不连续的数据: b 3
e 7
f 9
dtype: int64
Series对象可以进行各种运算,例如算术运算、逻辑运算、数学运算等。当两个Series之间进行运算时,Pandas会根据Series的标签自动对齐两个Series的元素进行运算,而不是按照两个Series元素的位置进行对齐,如果两个Series的标签不同,则在对齐时用NaN填充缺失值。在下面的案例中,定义了两个标签不同的Series并进行运算,代码如下:
ser4 = pd.Series([1, 5], index=['a', 'b'])
ser5 = pd.Series([2, 6], index=['b', 'c'])
print("加法运算:", ser4 + ser5)
print("乘法运算:", ser4 * ser5)
print("布尔过滤:", ser5[ser5 > 4])
print("数的运算:", ser4 * 2)
print("数学运算:", np.square(ser4))
执行代码,输出结果如下:
加法运算: a NaN
b 7.0
c NaN
dtype: float64
乘法运算: a NaN
b 10.0
c NaN
dtype: float64
布尔过滤: c 6
dtype: int64
数的运算: a 2
b 10
dtype: int64
数学运算: a 1
b 25
dtype: int64
好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。