pandas应用和学习

一.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
  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值