Pandas常用类:Series,DataFrame数据结构

Pandas中有很多类,但是常用的类有三个:Series,DataFrame,Index.

Series:基本数据结构,一维标签数据,能保存任何数据类型

DataFrame:基本数据结构,一般为二维数组,是一组有序的列

文章篇幅较长,可以通过左下角的目录来帮助查看。

一、Series

1、基本语法格式:

class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

参数说明:

        data:表示接收的数据

        index:表示索引

        name:series的名称

2、list、ndarray、Series的简单比较

        (1)list列表,列表中的元素可以是不同的数据类型,使用从0开始的整数值作为默认索引;
        (2)ndarray数组,数组中的元素必须是同种数据类型,使用从0开始的整数值作为默认索引;
        (3)Series序列,是一维结构,类似于一维列表和ndarray中的一维数组,但是功能比他们要更为强大,Series由两部分组成:索引index和数值values;
        一维列表和一维数组中都是采用从0开始的整数值作为默认索引,索引值一般不显示的给出,但是我们可以通过索引去获取其中的元素。对于Series来说,默认索引也是从0开始的整数值作为默认索引,但是是显示地给出,更为强大的是,Series中的索引可以随意设置,方便我们取数。

代码操作:

import numpy as np
import pandas as pd

l1 = [1, 2, '列表', 4.5]    # 列表可储存各种数据类型
print(l1)
print(l1[3])

n1 = np.array([1,2,3,4,5])
n2 = np.array(['a', 'b', 'c'])
print(n1)
print(n2)
print(n2[2])

s1 = pd.Series([1,3,5,7], index = ['a', 'b', 'c', 'd'])
print(s1)
print(s1[2])    # 索引从0开始,所以s1[2]对应3.
print(s1['d'])

结果展示:

3、Series数据构成

       Series数据由行索引一组数据构成。因为数据是一维的(只有一列),所以Series只有行索引,没有列索引。

       如下图,左边是默认从0开始的索引,右边是数据的值。

4、创建Series

       Series数据可以通过列表、字典、数组来创建,在创建的过程中可以定义name和index。

(1)通过列表创建

x = [1,2,3,4]    # 列表
y = pd.Series(x,index=["a","b","c","d"],dtype=np.float32) # 指定浮点型数据
display(y)
# 索引是abcd,值是浮点型的1234

结果展示:

 (2)通过字典创建

x = dict(a=11,b=22,c=33) 
y = pd.Series(x)
print(y)

结果展示:

(3)通过数组创建

x = np.arange(1,9,2)  # 从1到6,步长是2
y = pd.Series(x)    
print(y)    # x指定的是值,所以索引默认从0开始

结果展示:

5、Series常用属性

(1)基本属性

s = pd.Series([11,22,33,44,55,66])

print(s.ndim)   # 返回series的维度
print(s.dtype)  # 返回series的数据类型
print(s.size)   # 返回series的个数

 结果展示:

(2)index和values属性

s = pd.Series([11,22,33,44,55], index = ['a', 'b', 'c', 'd', 'e'])

print(s.index)
print(s.values)

结果展示:

(3)删除数据和添加数据

s = pd.Series([11,22,33,44,55], index = ['a', 'b', 'c', 'd', 'e'])
s.drop('e', inplace = True)   # 删除数据
print(s)

s['h'] = 77     # 添加数据
print(s)

结果展示:

(4)算数运算

s1=pd.Series(np.arange(5),index=['a','b','c','d','e'])
s2=pd.Series(np.arange(5,10),index=['a','b','c','d','e'])
print(s1+s2)

s4=pd.Series(['张三','李四','王五','赵六','麻七'],index=['a','b','c','d','e'])
s5=pd.Series(['1','2','3','4','5'],index=['a','b','c','d','e'])
print(s4+s5)

结果展示:

(5)数据对齐

# 数据对齐是指pandas自动将数据转换为统一的数值类型
s=pd.Series([1,2,3,'',4],name='A',index=['a','b','c','d','e'])
print(s)

结果展示:

 二、DataFrame

1、基本语法格式

class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

参数说明:

        data:表示接收的数据

        index:表示索引

        columns:表示那一列的名字

2、DataFrame数据构成

        DataFrame有行数据和列数据,是二维结构。最左边一侧是索引,除了索引的其余为数据。索引默认从0开始。

 3、创建DataFrame

         DataFrame数据可以通过列表、字典、数组来创建。

(1)通过列表创建

x = [[23, '张三'], [34, '李四'], [38, '王五'], [45, '赵六'], [53, '麻七']]
print(pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名']))

结果展示:

 (2)通过字典创建

x = {'年龄': [23, 34, 38, 45, 53], '姓名': ['张三', '李四', '王五', '赵六', '麻七']}
print(pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e']))

结果展示:

 (3)通过数组创建

data=np.random.randn(6,4)  #创建一个6行4列的数组
print(pd.DataFrame(data,columns=list('ABCD'),index=[1,2,3,4,5,6]))

结果展示:

 4、DataFrame常用属性

(1)基本属性

x = [[23, '张三'], [34, '李四'], [38, '王五'], [45, '赵六'], [53, '麻七']]
df=pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名'])

print(df.index)       # 输出DataFrame的Index属性
print(df.columns)     # 输出DataFrame的列标签
print(df.axes)        # 输出DataFrame的行标签
print(df.ndim)        # 输出DataFrame的维度
print(df.shape)       # 输出DataFrame的形状

结果展示:

(2)DataFrame按列读取

x = [[23, '张三', '河北'], [34, '李四', '河南'], [38, '王五', '北京'], [45, '赵六','天津'], [53, '麻七','山东']]
df=pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名','籍贯'])

df.年龄
df[['年龄','籍贯']]
df.iloc[:,1:3] 

   ①df. 列名

   ②df.[['列名1' , '列名2']]

    ③df.iloc[:,列2:列3]   

df.iloc[:1] 读取第一列

df.iloc[:,1:3] 读取第二列到第三列的数据   

(3)DataFrame按行读取

x = [[23, '张三', '河北'], [34, '李四', '河南'], [38, '王五', '北京'], [45, '赵六','天津'], [53, '麻七','山东']]
df=pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名','籍贯'])

df.loc[['a','c','d']]
df.iloc[['0','2','3']]

   ①df.loc[['行标签1','行标签2','行标签3']]

    ②df.iloc[['行号1','行号2','行号3']]

(4)DataFrame的赋值

x = [[23, '张三', '河北'], [34, '李四', '河南'], [38, '王五', '北京'], [45, '赵六','天津'], [53, '麻七','山东']]
df=pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名','籍贯'])

df.年龄=[11,22,14,26,29]
print(df)

df.loc['c'] = [99,'一二','山西']
print(df)

   ①按列赋值

     df.列名   # 改变这一列的数值

    ②按行赋值

      df.loc['行标签'] = []       # 改变对应一行的数值

(5)DataFrame的插入

x = [[23, '张三', '河北'], [34, '李四', '河南'], [38, '王五', '北京'], [45, '赵六','天津'], [53, '麻七','山东']]
df=pd.DataFrame(x, index = ['a', 'b', 'c', 'd', 'e'], columns = ['年龄', '姓名','籍贯'])

df.insert(2,'性别', ['男','男','男','男','男'])
print(df)

row={'年龄':77,'姓名':'三四','性别':'男', '籍贯':'上海'}
df.loc['f']=row
print(df)

   ①插入一列

df.insert(ioc,column,value)
ioc:要插入的位置
colunm:列名
value:值

    ②插入一行

row={'年龄':77,'姓名':'三四','性别':'男', '籍贯':'上海'}
df.loc['行索引']=row

(6)DataFrame的删除

drop(labels, axis=0, level=None, inplace=False)
lables:要删除数据的标签
axis:0表示删除行,1表示删除列,默认0
inplace:是否在当前df中执行此操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值