Pandas基础(一)

Pandas基础(一)

一、本课目标
  • 了解Pandas的应用和特点
  • 掌握Pandas的安装
  • 掌握Series的特点和使用
二、Pandas简介
  • Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的一个扩展程序库
  • Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)
  • Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析
  • Pandas 名字衍生自术语 “panel data”(面板数据)和 “Pythondata analysis”(Python 数据分析)
  • Pandas 是一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)
三、Pandas 应用-1
  • 金融领域:金融机构使用 Pandas 来处理和分析股票市场数据、财务数据、交易数据等。Pandas 的灵活性和高效性使得金融分析师能够快速进行数据清洗、统计分析、建模等工作
  • 科学研究:科学研究领域经常涉及大量的实验数据、观测数据等,Pandas 提供了强大的工具来处理和分析这些数据,例如天文学、生物学、地球科学等领域
  • 企业数据分析:各种企业和组织都需要对业务数据进行分析,以支持决策和战略规。Pandas 提供了处理和分析企业数据的功能,包括销售数据、客户数据、运营数据等
  • 社交媒体分析:社交媒体平台产生的海量数据需要进行分析来了解用户行为、趋势和情感倾向。Pandas 可以帮助分析师处理和分析社交媒体数据,进行用户行为分析、情感分析等
四、Pandas 应用-2
  • 医疗保健:医疗保健领域需要处理和分析大量的医疗数据,包括患者数据、临床试验数据、医疗图像数据等。Pandas 提供了处理和分析这些数据的工具,支持医疗研究和临床决策
  • 教育研究:教育领域可以利用 Pandas 来处理学生表现数据、教学评估数据、课程数据等,从而进行教育研究和改进教学质量
  • 市场营销:市场营销专业人员可以使用 Pandas 分析市场数据、客户数据、广告数据等,以制定营销策略和优化市场活动效果
五、Pandas特点
  • 处理各种数据结构,尤其是表格型数据,如 SQL 数据库或 Excel 表格
  • 数据结构:Series 和 DataFrame
  • 数据加载与保存:可以从各种数据源加载数据,包括 CSV 文件、Excel 表格、SQL数据库、JSON 文件等,并且可以将处理后的数据保存到这些格式中
  • 数据清洗与转换:提供了丰富的函数和方法,用于数据清洗、处理缺失值、重复值、异常值等,以及进行数据转换、重塑和合并操作
  • 数据分析与统计:提供了各种统计函数和方法,用于描述性统计、聚合操作、分组运算、透视表等数据分析任务
  • 数据可视化:结合 Matplotlib 库,可以进行数据可视化,绘制各种统计图表,如折线图、散点图、直方图等
六、数据结构
  • 主要数据结构是
    • Series (一维数据)
    • DataFrame(二维数据)
  • Series 是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(即索引)组成
  • DataFrame 是一个表格型的数据结构,它含有一组有序的列,既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)
七、Series
  • 类似于一维数组或列表,是由一组数据以及与之相关的数据标签(索引)构成
    在这里插入图片描述
八、DataFrame
  • 类似于一个二维表格,是 Pandas 中最重要的数据结构。可以看作是由多个 Series 按列排列构成的表格,它既有行索引也有列索引,因此可以方便地进行行列选择、过滤、合并等操作
    在这里插入图片描述
九、Pandas安装
  • Pandas 是一个基于 Python 的库
  • 使用 pip 安装 pandas:
    • pip install pandas
  • 安装成功后,我们就可以导入 pandas 模块使用:
    • import pandas as pd
十、Series特点
  • 一维数组:只有一个轴(或维度),类似于 Python 中的列表
  • 索引: 每个 Series 都有一个索引,可以是整数、字符串类型,如果不指定索引,默认创建一 个从 0 开始的整数索引
  • 数据类型: Series 可以容纳不同数据类型的元素,包括整数、浮点数、字符串、Python 对象等
  • 操作:Series 支持各种操作,如数学运算、统计分析、字符串处理等
  • 缺失数据:Series 可以包含缺失数据,使用NaN来表示缺失或无值
十一、创建Series
  • 使用 Series() 构造函数创建 Series 对象,传递一个数据数组和一个可选的索引数组
  • 使用列表创建 Series
  • s = pd.Series([1, 2, 3, 4])
  • 使用 NumPy 数组创建 Series
  • s = pd.Series(np.array([1, 2, 3, 4]))
  • 使用字典创建 Series
  • s = pd.Series({‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4})
import pandas as pd
import numpy as np

print(pd.__version__)
''' 2.2.2 '''

s = pd.Series(['aa', 'bb', 'cc'])
print(s)
print(type(s))
print(s.dtype)

s = pd.Series(np.arange(10))
print(s)

s = pd.Series({'a':11, 'c':33, 'b':44})
print(s['a'])
十二、基本操作-1
  • 创建 Series 并指定索引
    • s = pd.Series([1, 2, 3, 4], index=[‘a’, ‘b’, ‘c’, ‘d’])
  • 获取单个值
    • print(s[‘a’]) # 返回索引标签 ‘a’ 对应的元素
    • print(s[0])
  • 获取多个值
    • print(s[‘a’:‘c’]) # 返回索引标签 ‘a’ 到 ‘c’ 之间的元素
    • print(s[0:3])
  • 索引和值的对应关系
    • for index, value in s.items():
      • print(f"Index: {index}, Value: {value}")
s = pd.Series(data = [1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])
print(s)
print(s['a'])
print(s[0])
print(s[1:2])
print(s['a':'c'])

for v in s:
    print(v)

for v in s.values:
    print(v)
for i in s.index:
    print(i)
for i, v in s.items():
    print(i, v)
print(type(s.values))
print(type(s.index))
print(type(s.items()))
十三、基本操作-2
  • 使用切片语法来访问 Series 的一部分
    • print(s[:3]) # 返回前三个元素
  • 为特定的索引标签赋值
    • s[‘a’] = 10 # 将索引标签 ‘a’ 对应的元素修改为 10
  • 通过赋值给新的索引标签来添加元素
    • s[‘e’] = 5 # 在 Series 中添加一个新的元素,索引标签为 ‘e’
  • 使用 del 删除指定索引标签的元素。
    • del s[‘a’] # 删除索引标签 ‘a’ 对应的元素
  • 使用 drop 方法删除一个或多个索引标签,并返回一个新的 Series。
    • s_dropped = s.drop([‘a’,‘b’]) # 返回一个删除了索引标签 ‘b’ 的新 Series
s = pd.Series(data = [1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])
print(s[:3])
print(s[0:3:2])
print(s)
s['a'] = 10
print(s)
s['e'] = 5
print(s)
del s['a']
print(s)
s = s.drop(['a', 'b'])
print(s)
十四、练习
# 创建 Series 对象,数据是 "Google", "Baidu", "Wiki",索引
# 是"g", "b", "w"
# 添加以下数据"Yahoo", "Taobao",索引是"y", "t"
#  将"t"索引对应的数据更新为"Tencent"
#  找出前3个数据
# 删除第2个数据
# 遍历所有数据
s = pd.Series(data = ["Google", "Baidu", "Wiki"], index = ["g", "b", "w"])
print(s)
s["y"] = "Yahoo"
s["t"] = "Taobao"
print(s)
s["t"] = "Tencent"
print(s)
r = s[:3]
print(r)
del s['b']
print(s)
for i in s.values:
    print(i)
for v in s:
    print(v)
十五、基本运算
  • 算术运算
    • result = series * 2 # 所有元素乘以2
  • 过滤
    • filtered_series = series[series > 2] # 选择大于2的元素
  • 数学函数
    • import numpy as np
    • result = np.sqrt(series) # 对每个元素取平方根
s = pd.Series(data = [1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])
print(s)
print(s * 2)
print(s + s)
print(s[s > 3])
print(s[s < 3])
print(s[s > 5])

s = pd.Series([16, 25, 36])
r = np.sqrt(s)
r = r.astype(int)
print(r)
十六、属性和方法-1
  • 获取索引
    • index = s.index
  • 获取数据
    • values = s.values
  • 获取描述统计信息
    • stats = s.describe()
  • 获取最大值和最小值的索引
    • max_index = s.idxmax()
    • min_index = s.idxmin()
s = pd.Series(data = [1, 6, 3, 4], index = ['a', 'b', 'c', 'd'])
print(s.describe())
print(type(s.describe()))
print(s.describe()['max'])
print(s.describe().max())
print(s[s.idxmax()])
print(s.max())
十七、属性和方法-2
  • print(s.dtype) # 数据类型
  • print(s.shape) # 形状
  • print(s.size) # 元素个数
  • print(s.count()) #元素个数
  • print(s.head()) # 前几个元素,默认是前 5 个
  • print(s.tail()) # 后几个元素,默认是后 5 个
  • print(s.sum()) # 求和
  • print(s.mean()) # 平均值
  • print(s.std()) # 标准差
  • print(s.min()) # 最小值
  • print(s.max()) # 最大值
# type(s):返回整个s 的类型,   #s.dtype:表示s中数据的类型        #type(s[200]):表示索引对应的值的类型
s = pd.Series([100, "abc", True, False], index = [True, False, "def", 200])
print(s)
print(type(s), s.dtype, type(s[200]))

s = pd.Series([[1, 2, 3], [4, 5, 6]])
print(s.shape)
n = np.array([[1, 2, 3], [4, 5, 6]])
print(n.shape)

s = pd.Series([[1, 2, 3], [4, 5, 6]])
print(s.size)

s = pd.Series([11, 22, 33, 44, 55, 66])
# 默认返回前五位或者后五位
print(s.head())
print(s.tail())
print(s.head(3), s[:3])
print(s.tail(3), s[s.size - 3:])

s = pd.Series([1, 2, 3, 4, 5])
print(s.sum())
print(s.count())
print(s.sum()/s.count(), s.mean())
print(s.std())
print(s.max(), s.min(), s.median(), np.percentile(s, 50))

s = pd.Series([[1, 2], 3, [[4], 5]])
print(s.size, s.count())
十八、属性和方法-3
  • 使用布尔表达式:
    • print(s > 2) # 返回一个布尔 Series,其中的元素值大于 2
  • 转换数据类型:
    • s = s.astype(‘float64’) # 将 Series 中的所有元素转换为 float64类型
s = pd.Series([11, 22, 33, 44, 55, 66, 77, 88])
print(s[s > 33])
print(s > 3)
'''
3    44
4    55
5    66
6    77
7    88
dtype: int64
0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True
dtype: bool
'''

s = pd.Series([1, 2, 3])
print(s.dtype)
s = s.astype(np.float16)
print(s.dtype)
十九、练习
# 将城市信息保存到Series中
data = pd.Series(
    ['成都', '大连', '上海', '北京', '杭州', '北京', '大连', '成都', '深圳', '上海', '成都', '大连', '上海', '北京',
     '深圳', '北京', '大连', '成都', '深圳', '上海', '沈阳', '沈阳', '长春', '太原', '大连', '北京', '北京'])
print(data)
# 统计城市名称出现的次数
r = data.value_counts()
print(r, type(r))
# 将城市名按照出现的次数升序排列
r = data.value_counts().sort_values()
print(r)
# 输出城市名出现的次数的平均值
r = data.value_counts().mean()
print(r)
# 先降序排列,再输出前5个出现次数最多城市信息
r = data.value_counts().sort_values(ascending=False).head(5)
print(r)
r = data.value_counts().sort_values().tail(5)
print(r)
# 输出排名2~4的城市信息
r = data.value_counts().sort_values(ascending=False).iloc[1:4]
print(r)

r = data.value_counts().sort_values(ascending=False)
print(r)
r = r[r > 3]
print(r)
二十、总结
  • 了解Pandas的应用和特点
  • 掌握Pandas的安装
  • 掌握Series的特点和使用
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小白日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值