Pandas的DataFrame和Series及其操作

本文详细介绍了Pandas的DataFrame和Series数据结构,包括创建、属性和函数。此外,还涵盖了索引对象、数据操作如重新索引、丢弃项、算术运算、函数应用和映射、排序、统计计算、缺失数据处理以及层次化索引的使用。通过实例展示了如何使用这些功能,为数据处理提供了实用技巧。
摘要由CSDN通过智能技术生成

一、Pandas数据结构介绍

    Series:

Series是一种类似于一维数组的对象,是由一组数据以及一组与之相关联的标签(即索引)组成的,具体的表现形式就是索引在左边,值在右边。

import pandas as pd
import numpy as np

1.创建Series

    a.通过列表创建Series:


    直接创建Series,索引的值是默认的自动创建一个0到N-1的整数索引:

obj = pd.Series([4,7,-5,3])

    

    创建Series并且为其设置索引:

obj2 = pd.Series([4,7,-5,3], index=['d','b','a','c'])

    


    b.通过字典创建Series:


    如果只传入一个字典,则结果Series中的索引就是原字典的键,而且是按键值有序排列:

sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
obj3 = pd.Series(sdata)

    

    用字典创建Series时,同时为Series设置index属性,结果Series的索引以index的参数值为准,若存在索引没有对应值的情况,则结果就是NaN:

sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
states = ['California','Ohio','Oregon','Texas']
obj3 = pd.Series(sdata, index=states)
        在这个例子里sdata中和索引states相匹配的那三个值会被找出来放到相应的位置上,但是'Carlifornia'所对应的sdata值找不到,其结果只能是NaN


2.Series的基本属性、函数:


    a.通过Series的values和index属性获取其数组表示形式和索引对象:

obj = pd.Series([4,7,-5,3])
obj.values
obj.index

    

    b.通过pandas的isnull()函数,notnull()函数以及Series的isnull()实例方法检测缺失数据:

pd.isnull(obj4)
pd.notnull(obj4)
obj4.isnull()


    c.Series的name属性和Series索引的name属性:

obj4.name='population'
obj4.index.name='state'


    DataFrame:

DataFrame是一个表型的数据结构,它含有一组有序的列,每列间可以是不同的数据类型(数值,字符串,布尔值等)。DataFrame既有行索引又有列索引,其中的数据是以一个或多个二维块存放的,而不是列表,字典或别的一维数据结构。虽然它是个二维的结构,但是DataFrame任然可以表示更高维的数据(利用层次化索引的表结构)。

1.创建DataFrame:

    a.由等长的列表或Numpy数组组成的字典创建DataFrame:

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year':[2000,,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(data)



    由等长的列表或Numpy数组组成的字典创建DataFrame,同时指定列顺序:

data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]}
frame = pd.DataFrame(data,columns=['year','state','pop'])

    和Series一样,如果传入index的参数在数据中找不到对应值,就会产生NaN:

frame2 = pd.DataFrame(data,columns=['years','state','pop','dept'],index=['one','two','three','four','five'])

    

    通过嵌套字典创建DataFrame:

    如果将嵌套字典传递DataFrame,外层字典的键作为列,内层键则作为行索引:

pop = {'Nevada':{2001:2.4,2002:2.9},
'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
frame3 = pd.DataFrame(pop)



    


2.DataFrame的列操作:

    DataFrame的列获取为一个Series:

frame2['state']
frame2.year

    

    列可以通过赋值的方式进行修改:

    将数值赋值给DataFrame的一列时,整个一列都是该数值;将列表或数组赋值给DataFrame的一列时,要求其长度和DataFrame的长度相等;将一个Series赋值给DataFrame的一列,会精确的将Series和DataFrame的匹配并进行赋值,所有空位上都是缺失值:

frame2['debt'] = 16.5
frame2['debt'] = np.arange(5)

val = pd.Series([-1.2,-1.5,-1.7], index=['two','four','five'])
frame2['debt'] = val

 


    删除DataFrame的一行:

    通过关键字del删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值