pandas数据结构下的Series以及DataFrame数据的增删改查以及创建

pandas的数据结构的介绍

1.Series 对象的创建

  • Series是一种一维的数组型对象,它包含了一个值序列(values),并且包含了数据标签,称为索引(index)

pd.Series(data=None,index=None,dtype=None,name=None,copy=False)
● data:创建数组的数据,可为array-like, dict, or scalar value
● index:指定索引
● dtype:数组数据类型
● name:数组名称
● copy:是否拷贝

  • 1.可以通过列表,元组,数组,字典来进行创建

  • 列表创建

import pandas as pd
import numpy as np
df1 = pd.Series([0,1,2,3])
df1
  • 元组创建
df1 = pd.Series((0,1,2,3,4,55))
df1
  • 数组创建
  • 这里我们可以看到数组创建的数据类型是int32
df2 = pd.Series(np.arange(20))
df2

olor_FFFFFF,t_70,g_se,x_16)

  • 字典创建
df3 = pd.Series({'name':'li', 'sex': '女','age': '22'})
df3

2.指定索引

1.我们可以指定列的索引为10-29

df2 = pd.Series(np.arange(20),index=list(range(10,30)))
df2

2.也可以指定索引为字符串

pd.Series([1,2,3,4,5],index=list("abcde")) 

3.修改Series对象的类型

  • 从整型变为了浮点型
df1 = pd.Series((0,1,2,3,4,55),dtype="float")
df1

4.添加表的名称

df1 = pd.Series((0,1,2,3,4,55),dtype="float",name="data_name")
df1

5.查看表中所有数据

当我们不能把表查看完全的时候我们可以使用以下代码,但是不建议使用

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

6.Series对象函数的运用

  • 1.查看数据类型
    df2.dtype

  • 2.修改数据类型
    df2.astype(‘float’)

  • 3.预览数据前5条和后五条
    df2.head() 和 df2.tail(5)

  • 4.查看索引
    df2.index

  • 5.查看值序列
    df2.values

  • 6.重置索引
    df2.reset_index(drop=False) # 重置索引
    ○ drop # 是否删除原索引 默认为否

  • 7.检查是否为空

df2.isnull()
  • 8.检查不是缺失值
df2.notnull()

2.DataFrame对象的创建

  • DataFrame表示的是矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值,字符串,布尔值)。在DataFrame中,数据被存储为一个以上的二维块。

pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)
● data:创建数组的数据,可为ndarray, dict
● index:指定索引
● dtype:数组数据类型
● copy:是否拷贝

1.DataFrame对象可以通过字典,列表,字典里面嵌套字典,以及Series组成的字典来进行创建DataFrame对象

  • 字典创建
import pandas as pd
data  = {
    'a':[1,2,3],
    'b':(4,5,6),
    'c':np.arange(7,10)
}
b = pd.DataFrame(data)
b
  • 列表创建
  • 列表里面嵌套字典
d = pd.DataFrame([{'a':'b','v':3},
                  {'a':1,'n':32},
                 {'a':6,'m':99}])
d
  • Series组成的字典创建
df1 = pd.DataFrame({
    'a':pd.Series(np.arange(5)),
    'b':pd.Series(np.array((8,9,7,5,55)))
})
  • 字典里面嵌套字典创建
df2 = pd.DataFrame({
    'a':{'b':1},
    'v':{'f':'s'}
})

在这里插入图片描述

2.指定索引

  • 行索引
df2.index
  • 列索引
df2.columns
  • 把DataFrame表格型数据结构变成二维数组
df2.values
  • 转置(行变成列,列变成行)
df1.T
  • DataFrame基础操作
    ● df.shape # 查看数组形状,返回值为元组
    ● df.dtypes # 查看列数据类型
    ● df.ndim # 数据维度,返回为整数
    ● df.index # 行索引
    ● df.columns # 列索引
    ● df.values # 值
    ● d.head(n) # 显示头部几行,默认前5行
    ● d.tail(n) # 显示末尾几行,默认后5行
    ● d.info() # 相关信息概述

3.Series 和 DataFrame的切片操作

1.Series增数据

  • 原数组

第一种:

s['m']=999
s

第二种:

 a = s.append(pd.Series({'ly':'520'}))
a

2.Series删数据

1.把 c 的一行给删除(在原数组上操作,改变原数组)

del a['c']
a

2.把 f 的一行给删除不改变原数组

c = a.drop('f')
c

1.DataFrame增数据

  • 原表格数据
df3 = pd.DataFrame({
    'a':pd.Series(np.arange(5)),
    'b':pd.Series(np.array((8,9,7,5,55))),
    'c':[8,2,44,22,55]
})
df3

1.DataFrame对象增数据

  • 1.增加列

第一种:增加一列全是99(最后一列)

df3['d']=99
df3

第二种: 指定位置增加一列
在第二列增加一列

df3.insert(1,'E',[1,2,33,44,55])
df3
  • 2.增加行

1.增加一行都是88

df3.loc['ly']=88
df3

2.增加一行a对应2222,c对应的8888,其余没有的都为NaN
添加这个参数是忽略原有的索引 , 才不会报错 ignore_index=True
不会改变原数组

df4 = df3.append({'a':2222,'c':8888},ignore_index=True)
df4

2.DataFrame对象删数据

  • 1.删除列

1.在原数组上删除‘d’这一列

del df4['d']

2.不改变原数组删除E和a这俩列

df4.drop(['E','a'],axis=1)
  • 2.删除行

删除第一行和第五行(不改变原数组)

df4.drop([1,5],axis=0)

删除第一行到第五行i (nplace=True改变原数组)

df4.drop([i for i in range(0,4)],inplace=True)

3.DataFrame对象查数据

  • 1.查找第a列
df4.a

df4['a']

df4.loc[:,'a']

  • df4[[‘a’ ]] 可以以dataFrame对象的形式取出来
    在这里插入图片描述

  • 2.查找第1行

df4.iloc[1]

df4.loc[1]
  • 3.查找第2-5行
df4.iloc[2:6]
  • 3.查找第三行第三列数据
df4.iloc[2:3,2:3]
  • 4.查找前三列
df4.loc[:,df4.columns[:3]]

4.Series 和 DataFrame的重新索引

1.Series重新索引

  • 原数组
a = pd.Series([1,2,3,4,5],index=list("abcde")) 
a
a.reindex(['e','b','a','c','d'])
  • 2.Series重新命名
a.rename({'a':2,'c':55})

2.DataFrame重新索引

  • 原数组

  • 1.列重新索引(相当于重新排序如果重新弄得索引没有的话,会输出NaN)

df4.reindex(columns=['b','c','a','E'])
  • 2.行重新索引
    把第五行和第六行重新排序
df4.reindex([0,1,2,3,5,4,6],axis=0)
  • 1.列重新命名
    不改变原数组
df4.rename({'a':'A','E':'B','b':'C','c':'D'},axis=1)
  • 2.行重新命名
    我们只需要把 axis改为0即可
df4.rename({0:'A',1:'B',2:'C',5:'D'},axis=0)
  • 3.生成新的所有序列(drop = True)不要原来的序列,可以加上这个参数
df4.reset_index()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最低调的奢华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值