pandas应用和学习

发布时间:2024年01月04日

一.pandas的基本内容

1.Python在数据处理上有代码灵活,开发快速的特点.尤其是Python的Pandas包,无论是在数据分析领域还是在大数据开发场景都具有显著优势:

①Pandas是Python的一个第三方包,也是商业和工程领域最流行的结构化数据工具集,用于数据清洗,处理以及分析.

②Pandas和Spark中很多功能都类似,甚至使用方法都相同.建议两者可以一起学习.

③Pandas在数据开发的流程中的应用场景

在大数据场景下,数据在流转的过程中,Python Pandas丰富的API能够更加灵活,快速的对数据进行清洗和处理

④Pandas在数据处理上有独特的优势:

1)底层是基于Numpy构建的,所有运行速度特别的快

2)有专门的处理缺失数据的API

3)强大而灵活的分组,聚合,转换功能

2.适用场景

①数据量大到excel严重卡顿,且又都是单机数据的时候,我们使用Pandas

②在大数据ETL数据仓库中,对数据进行清洗和处理的环节使用Pandas

二.如何安装Pandas

打开黑窗口cmd界面,执行 pip install -i Simple Index pandas==1.1.5

卸载pandas命令:pip uninstall pandas

三.Pandas的数据结构

1.Pandas的数据结构主要分为:DataFrame和Series

DataFrame->Series->索引列:索引名,索引值.索引下标,行号

DataFrame->Series->数据列:列明,列值

1.1 series对象

Series是Pandas中最基本的数据结构对象,下文简称s对象,是DataFrame的列对象,series本身也有索引.Series是一种类似于一维数组的对象,由下面两个部分组成:

values:一组数据(numpy.ndarray类型)

index:相关的数据索引标签,如果没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引.

具体操作示例:

#导入pandas

import pandas as pd

#通过list列表来创建

# 使用默认自增索引
s2 = pd.Series([1, 2, 3])
print(s2)
# 自定义索引
s3 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s3


结果为:
0 ? ?1
1 ? ?2
2 ? ?3
dtype: int64
A ? ?1
B ? ?2
C ? ?3
dtype: int64

#使用字典或元组创建series对象

#使用元组
tst = (1,2,3,4,5,6)
pd.Series(tst)

#使用字典:
dst = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6}
pd.Series(dst)

1.2 Series对象的运算

Series和数值型变量计算时,变量会与Series中的每个元素逐一进行计算

两个Series之间计算,索引值相同的元素之间会进行计算;索引不同的元素最终计算的结果会填充成缺失值,用NaN表示

2.DataFrame(示例)

import pandas as pd

# 程序的入门: pyspark的程序, 必须要有程序入门
# 快捷键: main + 回车
if __name__ == '__main__':
? ? print("演示相关的操作: dataFrame")

? ? # 1- 创建DataFrame对象
? ? # 演示字典的方式
? ? df = pd.DataFrame(data={
? ? ? ? 'id': [1, 2, 3, 4, 5],
? ? ? ? 'name': ['张三', '李四', '王五', '赵六', '田七'],
? ? ? ? 'address':['北京','上海','广州','天津','成都']
? ? })

? ? print(df)

? ? # 演示 列表 + 元组的方式 或者 列表 + 列表 或者 ?元组+元组
? ? df = pd.DataFrame([
? ? ? ? (1, '张三', '北京'), ?# 一个元组代表是一行数据
? ? ? ? (2, '李四', '上海'),
? ? ? ? (3, '王五', '广州'),
? ? ? ? (4, '赵六', '天津'),
? ? ? ? (5, '田七', '成都')
? ? ],columns=['id','name','address'])

? ? print(df)

? ? df = pd.DataFrame((
? ? ? ? (1, '张三', '北京'), ?# 一个元组代表是一行数据
? ? ? ? (2, '李四', '上海'),
? ? ? ? (3, '王五', '广州'),
? ? ? ? (4, '赵六', '天津'),
? ? ? ? (5, '田七', '成都')
? ? ), columns=['id', 'name', 'address'])

? ? print(df)

? ? df = pd.DataFrame([
? ? ? ? [1, '张三', '北京'], ?# 一个元组代表是一行数据
? ? ? ? [2, '李四', '上海'],
? ? ? ? [3, '王五', '广州'],
? ? ? ? [4, '赵六', '天津'],
? ? ? ? [5, '田七', '成都']
? ? ], columns=['id', 'name', 'address'])


? ? # 2. dataFrame的相关API:
? ? # 2.1 表示多少行
? ? print(len(df))
? ? # 2.2 有多少个单元格
? ? print(df.size)

? ? # 2.3 遍历df
? ? for columnName in df:
? ? ? ? print(columnName)
? ? ? ? for value in df[columnName]:
? ? ? ? ? ? print(value)

? ? # 2.4 获取某一列数据, 相当于获取这一列的series对象
? ? s_name = df['name']
? ? print(s_name)

? ? v = df['address'][0]
? ? print(v)

? ? # 2.5 获取前N行 或者 后 N行
? ? print(df.head(3))
? ? print(df.tail(3))

? ? # 3- DF的相关运算操作
? ? df = pd.DataFrame(data={
? ? ? ? 'id': [1, 2, 3, 4, 5],
? ? ? ? 'name': ['张三', '李四', '王五', '赵六', '田七'],
? ? ? ? 'address': ['北京', '上海', '广州', '天津', '成都']
? ? })

? ? print(df * 5)
? ? # print(df + 1) ?报错, 因为 字段中有字符串类型的数据列
? ? # 针对索引来计算, 将相同索引的对应的列进行计算操作
? ? df1 = pd.DataFrame(data={
? ? ? ? 'id': [1, 2, 3, 4, 5],
? ? ? ? 'age': [20,30,41,15,13]
? ? ? ??
? ? },index=[0,1,2,'D','E'])

? ? df2 = pd.DataFrame(data={
? ? ? ? 'id': [2, 4, 5, 1, 5],
? ? ? ? 'age': [18,15,16,12,13]

? ? })

? ? print(df1 * df2)

3.Pandas的数据类型

Pandas数据类型说明对应的Python类型
Object字符串类型string
int整数类型int
float浮点数类型float
datetime日期时间类型datetime包中的datetime类型
timedelta时间差类型datetime包中的timedelta类型
category分类类型无原生类型,可以自定义
bool布尔类型True,False
nan空值类型None

4.pandas多格式数据读写

文件格式读取函数写入函数
xlsxpd.read_exceldf.to_excel
xlspd.read_exceldf.to_excel
csvpd.read_csvdf.to_csv
tsvpd.read_csvdf.to_csv
jsonpd.read_jsonto_json
htmlpd.read_htmldf.to_html
sqlpd.read_sqldf.to_sql
剪贴板df.read_clipboarddf.to_clipboard
文章来源:https://blog.csdn.net/MSJ3917/article/details/135309686
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。