Pandas 1.1:Pandas介绍和Pandas数据结构

目录

Pandas介绍

Pandas数据结构 

1. Series

2. DataFrame

DataFrame的创建

DataFrame的属性

 DatatFrame索引的设置

3. MultiIndex

4. Panel


Pandas介绍

  • 2008年WesMcKinney开发出的库
  • 专门用于数据挖掘的开源python库
  • 以Numpy为基础,借力Numpy模块在计算方面性能高的优势
  • 基于matplotlib,能够简便的画图
  • 独特的数据结构

相比 Numpy 和 matplotlib ,pandas:

  • 增强图表可读性
    比如在 numpy 中创建成绩表样式:

    如果数据展示为这样,可读性就更友好:
  • 便捷的数据处理能力

  • 读取文件方便
  • 封装了Matplotlib、Numpy的画图和计算

Pandas数据结构 

Pandas 共有三种数据结构:

  • Series(一维数据结构)
  • DataFrame(二维表格型数据结构)
  • MultiIndex(三维数据结构,老版本中叫Panel )

1. Series

Series是一个类似于一维数组的数据结构,能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。

Series的创建

# 导入pandas
import pandas as pd

pd.Series(data=None, index=None, dtype=None)

参数:

data传入的数据,可以是ndarray、list等
index索引,必须是唯一的,且与数据的长度相等。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。
dtype数据的类型
  • 通过已有数据创建:
# 导入pandas
import pandas as pd

data = range(10)
s = pd.Series(data)
print(s)

  • 指定索引:
# 导入pandas
import pandas as pd

data = range(5)
s = pd.Series(data=data, index=['a', 'b', 'c', 'd', 'e'])
print(s)

  • 通过字典数据创建
# 导入pandas
import pandas as pd

a = {'red': 100, 'blue': 200, 'green': 500, 'yellow': 1000}
s = pd.Series(a)
print(s)

 

Series的属性 

Series 提供了两个属性:index 和 values

  • index
    # 导入pandas
    import pandas as pd
    
    a = {'red': 100, 'blue': 200, 'green': 500, 'yellow': 1000}
    s = pd.Series(a)
    print(s.index)
    

  • values
    # 导入pandas
    import pandas as pd
    
    a = {'red': 100, 'blue': 200, 'green': 500, 'yellow': 1000}
    s = pd.Series(a)
    print(s.values)

2. DataFrame

DataFrame 是一个类似于二维数组或表格(如excel)的对象,有行索引,又有列索引

  • 行索引:横向索引,叫 index,0轴,axis=0
  • 列索引:纵向索引,叫 columns,1轴,axis=1

DataFrame的创建

# 导入pandas
import pandas as pd

pd.DataFrame(data=None, index=None, columns=None)

参数:

index行标签。如果没有传参数,默认自动创建 0-N 的整数索引。
columns列标签。如果没有传参数,默认自动创建 0-N 的整数索引。

  • 通过已有数据创建

    # 导入pandas
    from random import random
    
    import numpy as np
    import pandas as pd
    
    # 随机生成 60到100,10行5列 的数据
    score = np.random.randint(60, 100, (10, 5))
    
    s = pd.DataFrame(score)
    print(s)
    

  • 增加行、列索引
    # 导入pandas
    from random import random
    
    import numpy as np
    import pandas as pd
    
    # 随机生成 60到100,10行5列 的数据
    score = np.random.randint(60, 100, (10, 5))
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print(data)
    

DataFrame的属性

  • shape:行数和列数
    import numpy as np
    import pandas as pd
    
    # 随机生成 60到100,10行5列 的数据
    score = np.random.randint(60, 100, (10, 5))
    data = pd.DataFrame(score)
    
    print(data.shape)
    

  • index:DataFrame的行索引列表

     
  • columns:DataFrame的列索引列表

     
  • values:直接获取其中array的值

     
  • T:转置

     
  • head(n)前n行内容,不传参数默认5

     
  • tail(n):后n行内容,不传参数默认5

 DatatFrame索引的设置

  • 修改行列索引值
    stu = ["学生_" + str(i) for i in range(score_df.shape[0])]
    
    # 必须整体全部修改
    data.index = stu
    

    注意:必须整体全部修改!以下修改方式是错误的:

    # 错误修改方式
    data.index[3] = '学生_3'
  • 重设索引:设置新的下标索引

    # 重置索引,drop=False
    
    data.reset_index()
    data.reset_index(drop=True)

    drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
     

  • 把某列值设置为新的索引
    set_index(keys, drop=True)
        keys:
    列索引名或者列索引名称的列表
        drop:boolean, 默认True:当做新的索引,删除原来的列

    也可以设置多个索引:

    df = df.set_index(['year', 'month'])

注:通过刚才的设置,这样DataFrame就变成了一个具有 MultiIndex 的 DataFrame。

3. MultiIndex

 MultiIndex 是 三维 数据结构;

多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。

multiIndex的特性

index:

names:索引列表

levels:索引相应的内容列表

 multiIndex 的创建

import pandas as pd

arrays = [
    [1, 1, 2, 2],
    ['red', 'blue', 'red', 'blue']
]
pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))

4. Panel

注意:新版本 pandas 已经把 Panel 移除

panel的创建:

pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None)
import numpy as np
import pandas as pd

p = pd.Panel(
    data=np.arange(24).reshape(4, 3, 2),
    items=list('ABCD'),
    major_axis=pd.date_range('20130101', periods=3),
    minor_axis=['first', 'second']
)

示例讲解:存储3维数组的Panel结构

  • data:ndarray或者dataframe

  • items:索引或类似数组的对象,axis=0

  • major_axis : 索引或类似数组的对象,axis=1

  • minor_axis : 索引或类似数组的对象,axis=2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值