Pandas的基本属性和操作(增,删,改,查,合并)

官方文档

Pandas官网

基本属性

显示详细

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四'],
    "语文": [89, 77]
})
d1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   姓名      2 non-null      object
 1   语文      2 non-null      int64 
dtypes: int64(1), object(1)
memory usage: 160.0+ bytes

行总数

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四','赵五'],
    "语文": [89, 77,55]
})
len(d1.values) #一共有3行

列总数

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四','赵五'],
    "语文": [89, 77,55]
})
len(d1.columns) #一共有2列

获取列名

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四','赵五'],
    "语文": [89, 77,55]
})
d1.columns #返回一个列表 ['姓名', '语文']

新增DataFrame

现实情况下,数据来源一般是网页JSON,CSV文件等,不会手工输入一个字典.

使用字典新增
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四'],
    "语文": [89, 77]
})
d1

在这里插入图片描述

使用列表新增
import pandas as pd
d2=pd.DataFrame(
    [['张三',89],
     ['李四',77]],
    columns=['姓名','语文'])
d2

在这里插入图片描述

新增列

在最后新增一列
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55]
})
d1['数学']=[56,98,45]
d1
在任意位置插入一列
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55]
})
d1.insert(loc=1, column='数学', value=[77, 88, 0])
d1

在这里插入图片描述

插入多列(只能在最后)

第一种方法是遍历一个字典,循环调用insert()

第二种方法是把要插入的列,转到DataFrame,再用pd.concat()合并,这里的合并是不考虑匹配的.考虑匹配的方法在后面介绍.

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55]
})
d2 = pd.DataFrame({
    "数学": [63, 85, 47],
    "英文": [89, 77, 55]
})
d3 = pd.concat([d1, d2], axis=1)
d3

在这里插入图片描述

新增行

在最后新增一行
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55]
})
d1.loc[len(d1.values)]=['林九',99]
d1

在这里插入图片描述
这里使用 loc[行标识] 来操作,他会先在原有 行标识 里查找,如果没有就新增一行,如果有,就改定这一行.

在任意位置插入一行
import numpy as np
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55],

})
d2 = pd.DataFrame(np.insert(d1.values, 2, values=['林九',56], axis=0))
d2

在这里插入图片描述
这里是先把DataFrame的值转换成numpy对象,再用numpy.insert()进行插入操作.

插入多行

第一种方法是像插入一行哪样,但传入的值是一个列表,列表里装多行数据.

import numpy as np
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五'],
    "语文": [89, 77, 55],

})
d2 = pd.DataFrame(np.insert(d1.values, 2, values=[['林九',56],['张五',78]], axis=0))
d2

删除一列或多列

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英文": [11, 22, 33, 44],
})
d1.drop('语文', axis=1, inplace=True)
d1

在这里插入图片描述

删除一行或多行

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d1.drop([1,2], axis=0, inplace=True)
d1

在这里插入图片描述

改和查

使用lociloc可以对DataFrame进行切片.
他是双向属性:可写也可读
在等号左边就是
在等号右边就是

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d2=d1.loc[1:2,['姓名','物理']]
d2
d1.loc[1:2,['姓名','物理']]=[
    ['李四改',81],
    ['赵五改',82]
]
d1

在这里插入图片描述

loc和iloc的重要参数

loc[行范围,列范围]
iloc[行范围,列范围]
行范围和列范围的表示方法

行范围以索引为参考值
列范围是以列名为参考值

loc在行范围可以使用数字和文本来定位(根据索引的数据类型),列范围必须使用文本来定位

iloc在行和列范围全是使用数字来定位

定位参数可以是:

单个

一个数字或一个文本

连续范围

数字冒号数字
文本冒号文本

不连续的范围

传入一个列表
[数字,数字]
[文本,文本]

loc详解

loc是使用文本标签来进行切片
如果索引是数字类型,可使用数字来选择行范围

索引是数字类型
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d1.loc[[0,2],:]

在这里插入图片描述

索引是文本类型
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d2=d1.set_index('姓名')
d2.loc['李四':'赵五',:]

在这里插入图片描述

例子
import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '林九'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d2=d1.set_index('姓名')
d2.loc[['张三','林九'],['语文','物理']]

在这里插入图片描述

iloc详解

import pandas as pd
d1 = pd.DataFrame({
    "姓名": ['张三', '李四', '赵五', '李四'],
    "语文": [89, 77, 55, 91],
    "英语": [11, 22, 33, 44],
    "数学": [22, 33, 44, 55],
    "物理": [55, 66, 77, 77],
})
d2=d1.set_index('姓名')
d2.iloc[1:3,[0,3]]

在这里插入图片描述

筛选

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值