首页 其他 dataframe删除多列(Dataframe删除列)

dataframe删除多列(Dataframe删除列)

其他 162
广告一

"""pandas数据结构 DataFrame的基本应用练习示例"""

import pandas as pd

import numpy

'''

DataFrame是一个表格行的数据结构,

即有行标签(index),又有列标签(columns),

它也被称为异构数据表

所谓异构,指的是表格中每列的数据类型可以不同。

比如:可以是字符串,整形或浮点型等。

DataFrame 的每一行数据都可以看成一个Series结构,

只不过,DataFrame为这些行中每个数据值增加了一个列标签。

DataFrame其实是从Series的基础商演变而来的。

DataFrame结构类似于Excel的表格类型

DataFrame数据结构的特点:

DataFrame每一列的标签值允许使用不同的数据类型;

DataFrame是表格行的数据结构,具有行和列

DataFrame中的每个数据值都可以被修改

DataFrame结构的行数。列数允许增加或者删除。

DataFrame有两个方向的标签轴,分别是行标签和列标签

DataFrame可以对行和列执行算数运算

'''

# *******************************************

# 创建DataFrame对象 语法参数说明:

# DataFrame(data,index,columns,dtype,copy)

# data: 数据,输入的数据可以是ndarry ,series list dict 标量 DataFrame

# index: 行标签,如果没有传递index值,则默认行标签是np.arange(n),n代表data的元素个数

# dtype: 数据类型

# copy: 默认为false 表示复制数据data

# 创建一个空的DataFrame对象,

df = pd.DataFrame()

print(df)

# 使用单一列表创建DataFrame

# *************************************************

data = [1,2,3,4,5]

df = pd.DataFrame(data=data)

print("使用单一列表创建DataFrame")

print(df)

# 使用嵌套列表创建DataFrame

# *********************

data=[['张飞', '右将军'],

['赵云', '镇军将军'],

['关羽', '前将军'],

['黄忠', '后将军'],

['马超', '左将军']]

df = pd.DataFrame(data=data,columns=['姓名', '职称'])

print("使用嵌套列表创建DataFrame:")

print(df)

# *************************************************

# 字典嵌套列表创建DataFrame,使用dice字典是{}大括号

data ={'姓名':['张飞','赵云', '关羽', '黄忠', '马超'],

'职称':['右将军','镇军将军', '前将军', '后将军', '左将军']}

df = pd.DataFrame(data=data)

print("使用字典嵌套列表创建DataFrame:")

print(df)

# *************************************************

# 使用列表嵌套字典创建DataFrame。

# 对于字典元素缺失的,就是字典的Key无法找到对应的value值,将使用NaN代替

data = [{"姓名":"张飞","职称":"右将军", "封号":"新亭侯"},

{"姓名":"赵云","职称":"镇军将军"},

{"姓名":"关羽","职称":"前将军","封号":"汉寿亭侯"},

{"姓名":"黄忠","职称":"后将军", "封号":"关内侯"},

{"姓名":"马超","职称":"左将军"},]

df = pd.DataFrame(data=data)

print("使用列表嵌套字典创建DataFrame,缺失值使用NaN代替:")

print(df)

# *************************************************

# Series创建DataFrame 字典嵌套Series

data={"one":pd.Series(['z','x','c']),

"two":pd.Series(['a','s','d'])}

df = pd.DataFrame(data=data)

print("字典嵌套Series创建DataFrame:")

print(df)

print("使用列索引访问数据:")

print(df['two'].values)

print("访问前两行数据:")

print(df.head(2))

# 使用loc按照行名,列名 访问数据

print("访问第一行,列名为:two的数据")

print(df.loc[1,"two"])

# iloc 只接受整数索引,

print("访问第一行数据")

print(df.iloc[1])

# 使用columns列索引表标签可以实现添加新的数据列

data["three"] = pd.Series(['q', 'w', 'e']) # 添加新的列

df = pd.DataFrame(data=data) # 重新创建DataFreame

print("插入新列:")

print(df)

# 使用del 删除DataFrame 部分数据

del df["two"]

print("使用del删除DataFrame 部分数据")

print(df)

# 使用pop方法删除DataFrame中的数据

df.pop("one")

print("使用pop方法删除DataFrame中的数据:")

print(df)

# *************************************************

data={"one":pd.Series(['z','x','c']),

"two":pd.Series(['a','s','d'])}

df = pd.DataFrame(data=data)

# drop方法 删除指定行数据

d = df.drop(index=1)

print("drop方法 指定删除第一行数据:")

print(d)

# ****************************************************

# 在末尾出添加行 append

df1 = pd.DataFrame(data={"one":pd.Series(['z','x','c']),

"two":pd.Series(['a','s','d'])})

df2 = pd.DataFrame(data={"one":pd.Series(['1','2','3']),

"two":pd.Series(['4','5','6'])})

# append方法 ignore_index参数 为True时,重新排列行索引

df1 = df1.append(df2,ignore_index=True)

print("append在末尾添加新数据:")

print(df1)

# ****************************************************

'''

常用属性和方法:与Series相差无几

T 行和列转置

axes 返回一个以行轴和列轴标签为成员的列表

dtypes 返回没每列数据的数据类型

empty DataFrame中没有数据或者任意坐标轴的长度为0,则返回True

ndim 轴的数量,也指数组的维数

shape 返回一个元组。表示了DataFrame维度

size DataFrame中的元素数量

values 以numpy数组表示DataFrame中的元素值

head() 返回前n行数据

tail() 返回后n行数据

shift() 将行或列一定指定的步幅长度

'''

data = [{"姓名":"张飞","职称":"右将军", "封号":"新亭侯", "年龄": 25},

{"姓名":"赵云","职称":"镇军将军", "年龄": 22},

{"姓名":"关羽","职称":"前将军","封号":"汉寿亭侯", "年龄": 28},

{"姓名":"黄忠","职称":"后将军", "封号":"关内侯", "年龄": 45},

{"姓名":"马超","职称":"左将军" , "年龄": 30} ]

df = pd.DataFrame(data=data)

# T 行列转换

print("行列转换:")

print(df.T)

print("输出行标签,列标签:")

print(df.axes)

print("每一列的数据类型:")

print(df.dtypes)

print("是否为空值,是空值时返回True,否则返回False:")

print(df.empty)

print("DataFrame对象的维数:")

print(df.ndim)

print("DataFrame维度的元组:返回值元组,第一个为行,第二个为列")

print(df.shape)

print("DataFrame元素数量:")

print(df.size)

print("以ndarry数组的形式返回DataFrame中的数据:")

print(df.values)

# 移动DataFrame中的数据

# 参数periods移动的幅度,int数据

# 参数axis 控制移动行或者移动列 'index'上下移动,'columns'左右移动

# 参数fill_value 用于填充移动后缺失的数据

df = df.shift(periods=1, axis='index', fill_value="无")

print("向下移动一行DataFrame中的数据,数据用无填充:")

print(df)

代码运行结果:

Empty DataFrame

Columns: []

Index: []

使用单一列表创建DataFrame

0

0 1

1 2

2 3

3 4

4 5

使用嵌套列表创建DataFrame:

姓名 职称

0 张飞 右将军

1 赵云 镇军将军

2 关羽 前将军

3 黄忠 后将军

4 马超 左将军

使用字典嵌套列表创建DataFrame:

姓名 职称

0 张飞 右将军

1 赵云 镇军将军

2 关羽 前将军

3 黄忠 后将军

4 马超 左将军

使用列表嵌套字典创建DataFrame,缺失值使用NaN代替:

姓名 职称 封号

0 张飞 右将军 新亭侯

1 赵云 镇军将军 NaN

2 关羽 前将军 汉寿亭侯

3 黄忠 后将军 关内侯

4 马超 左将军 NaN

字典嵌套Series创建DataFrame:

one two

0 z a

1 x s

2 c d

使用列索引访问数据:

['a' 's' 'd']

访问前两行数据:

one two

0 z a

1 x s

访问第一行,列名为:two的数据

s

访问第一行数据

one x

two s

Name: 1, dtype: object

插入新列:

one two three

0 z a q

1 x s w

2 c d e

使用del删除DataFrame 部分数据

one three

0 z q

1 x w

2 c e

使用pop方法删除DataFrame中的数据:

three

0 q

1 w

2 e

drop方法 指定删除第一行数据:

one two

0 z a

2 c d

append在末尾添加新数据:

one two

0 z a

1 x s

2 c d

3 1 4

4 2 5

5 3 6

行列转换:

0 1 2 3 4

姓名 张飞 赵云 关羽 黄忠 马超

职称 右将军 镇军将军 前将军 后将军 左将军

封号 新亭侯 NaN 汉寿亭侯 关内侯 NaN

年龄 25 22 28 45 30

输出行标签,列标签:

[RangeIndex(start=0, stop=5, step=1), Index(['姓名', '职称', '封号', '年龄'], dtype='object')]

每一列的数据类型:

姓名 object

职称 object

封号 object

年龄 int64

dtype: object

是否为空值,是空值时返回True,否则返回False:

False

DataFrame对象的维数:

2

DataFrame维度的元组:返回值元组,第一个为行,第二个为列

(5, 4)

DataFrame元素数量:

20

以ndarry数组的形式返回DataFrame中的数据:

[['张飞' '右将军' '新亭侯' 25]

['赵云' '镇军将军' nan 22]

['关羽' '前将军' '汉寿亭侯' 28]

['黄忠' '后将军' '关内侯' 45]

['马超' '左将军' nan 30]]

向下移动一行DataFrame中的数据,数据用无填充:

姓名 职称 封号 年龄

0 无 无 无 无

1 张飞 右将军 新亭侯 25

2 赵云 镇军将军 NaN 22

3 关羽 前将军 汉寿亭侯 28

4 黄忠 后将军 关内侯 45

me in
广告一