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多格式数据读写

文件格式 读取函数 写入函数
xlsx pd.read_excel df.to_excel
xls pd.read_excel df.to_excel
csv pd.read_csv df.to_csv
tsv pd.read_csv df.to_csv
json pd.read_json to_json
html pd.read_html df.to_html
sql pd.read_sql df.to_sql
剪贴板 df.read_clipboard df.to_clipboard

猜你喜欢

转载自blog.csdn.net/MSJ3917/article/details/135309686