spark 数据框 删除列_pandas 常用的数据处理函数

97188e78c61bf4bd4664980ee19df1f7.png
在数据分析过程中,首先就是对数据进行清洗和处理,而使用 python 进行处理的朋友们,对 pandas 包肯定是熟悉不过的了。pandas 的功能很强大,基本的数据处理操作都可以找到对应函数去使用,想全面了解的朋友可以查看相关文档。在这里,通过这篇文章分享整理了自己平时常用的函数和经验:

1.数据查看

数据量过大时,直接打印变量无法全面进行展示,这时候可以通过函数对数据框中前后几条数据进行查看,方便我们初步去了解数据的一个大体情况:

import 

52d25145d7258b92caacbd39e77d5eed.png

1.1 查看数据前/后几行

data.head(3) #不写几行默认5行
data.tail(2)

136faeae5d75e04c3720e9a404a6357b.png

1.2 查看数据索引

data.index

bae8ed8450a3b1ac7aa3b689e3a6ef3e.png

1.3 查看列名

data.columns

5af2482931d34664a1b0fffa0643e4a6.png

1.4 查看数据类型

data.dtypes

0afcf5e4c7bfa33655947034c115ab02.png

1.5 查看数据的基本分布情况

只对数值类型的字段有作用,包括了计数,均值,标准差,最大最小值和四分位数

data.describe()

7ad6c56cfbc971d5193e3816ae9683bf.png

2. 数据筛选

数据切片是处理函数中经常需要使用到的操作,相类似于 sql 语句中的 select。ps:同样使用以上面数据框 data 作为示例,下同。

2.1 列切片

data['A']
data[['A', 'B']]  # 同时选择多列

dd41d9263e63c44ed05767ec64b5a706.png

2.2 行切片

data[2:4]     # 选择第2到第三3行
data['b':'c'] # 选择多行

6b28780bc73a3ca46f8f82d8994eb94e.png

2.3 同时对行列进行切片

# 通过标签进行筛选
data.loc['a':'c', ['A', 'C']]
data.loc[['a','c'], ['A', 'C']]

6a67fb34d155158dda1a9c51901034a7.png
# 通过位置进行筛选
data.iloc[3]       # 不指定列的话,默认是选择行,单独选择某一行的话返回的不是一个数据框
data.iloc[2:4]     # 返回一个数据框
data.iloc[:, 1]    # 选择单列,返回的不是一个数据框
data.iloc[:, 1:3]  # 选择多列
data.iloc[[1, 2, 3], [0, 2]] # 选择不连续的多行多列

e3e1ba3ff4d1b2de565664e489a2fb66.png

ca1b8777ad6d73decd246671713a485d.png

2.4 条件筛选

# 单条件
data[data['C'] >= 30 ]
# 单列多条件
data[data['E'].isin(['小白', '小明'])]
# 多列多条件
data.loc[(data['B']>0.5) & (data['C']<30)]

9dce7e60dd0f69b505d299df2cccd74a.png

3. 数据增加

3.1 添加新的列

# 增加一列同样的值
data['F'] = 1  
# 增加一列不一致的值(可以是series也可以是list)
data['G'] = pd.Series([11, 22, 33, 44], index=['a', 'b', 'c', 'd'])
data['H'] = [1, 2, 3, 4]

9ce241fbba3d15de9a0d93105e022aec.png

3.2 添加新的行

append

data.append(data.iloc[2:4])
data.append(data.iloc[3], ignore_index=True)  #参数ignore_index=True,索引重新排列, 默认是False

aafd22e113c33757ccf196cad65fa3fa.png

concat: 同样有ignore_index参数,可以有字段不一致的情况。PS:合并的对象必须是dataframe

pd.concat([data, data.iloc[1:3]], ignore_index=True)
data_NA = pd.concat([data, data.iloc[[1, 2, 3], [0, 2]]], ignore_index=True)

ea7494124726bad632f28711cb282ba3.png

72d5b1e9e7d6a37f5370ad335e35099f.png

3.3 数据连接

merge: 两个数据表连接,类似于 sql 语句中的 join,字段可以不一致

pd.merge(data, data.iloc[[1, 2, 3], [0, 2]], on='A')

1c30b448ab9a71b631add76a0e67788f.png

4. 数据修改

dataframe 中的数据都是可以进行修改的,具体如下所示:

# 修改某一列
data['F'] = data['F'] + 1
# 修改某个值
data['F'].iloc[2] = 23

f93a29d70086a466db4b17e1fb9435d1.png

e912b3638b4e872829a53c045561009c.png

294b88d4534afcac9633c6205d0852c1.png

5. 数据删除

5.1 删除列

data_drop = data.drop('A', axis=1)  # 此时的data仍然是完整的

6e7c81ffefc0c0445d5ffc7530f18f9b.png

5.2 删除行

data_drop = data.drop('a', axis=0) # 对于满足条件的索引列表进行删除

2cdc3e03d0f08b096e97647ad8dfeb91.png

6. 常见数据的读入写出

6.1 Excel

# 读入
data = pd.read_excel('data.xlsx', encoding='utf8')
# 写出
data.to_excel('data.xlsx', encoding='utf8', index=None)

6.2 CSV

# 读入
data = pd.read_csv('data.csv', encoding='utf8')
# 写出
data.to_csv('data.csv', encoding='utf8', index=None)

6.3 txt

def load_data(file_path, encoding='utf8'):"""导入数据:param file_path: 数据存放路径:return: 返回数据列表"""f = open(file_path, encoding=encoding) data = []for line in f.readlines():row = []  # 记录每一行lines = line.strip().split("t")  # 各字段按制表符切割for x in lines:row.append(x)data.append(row)f.close()return datadata = load_data('data.txt', encoding='utf8')
data = pd.DataFrame(data[1:], columns=data[0])  # 第一行为字段名

7. 处理异常值、重复值

7.1 NA

# 查看nan值分布的情况
pd.isna(data_NA)
pd.isna(data_NA['H'])

e081ecb1b167e9580faefad62da8cb24.png
# 将nan填充成指定的值
data_NA['B'] = data_NA['B'].fillna(0)
data_NA = data_NA.fillna(0)

7dd1b2ef8d09f70d59f3b3231593d7fe.png
# 将数据中nan的数据全部替换成None,这样int类型或str类型的数据入mysql数据库的时候都显示是null
data_NA = pd.concat([data, data.iloc[[1, 2, 3], [0, 2]]], ignore_index=True)
data_NA_1 = data_NA.where(data_NA.notnull(), None)

6259502d8cf46bf03ef6044efb8060cd.png

1d98b7646041bd497bf190af652d32fd.png
# 删除nan值  
data_NA.dropna(how='any', axis=0)  # 只要出现 nan 的行就删除, 删除列则改为 axis=1
data_NA.dropna(subset=['B'])            # 对指定列出现 nan 的行进行删除

4363b537d6aa4ceb7c63948918008379.png

7.2 重复值

# 查看重复数据
data.duplicated()
data.duplicated(['D'])# 对全部字段进行去重
data_dropdup = data.drop_duplicates() # 对指定字段进行去重操作
data_dropdup = data.drop_duplicates(['C', 'F'])  

73b61f9a2d3a67b5638e799ad27627a2.png

8. dataframe 的属性

8.1 数据框的索引重排列

适用于数据框筛选、合并等导致索引不连续的情况

data = data.reset_index(drop=True)

dcf654f9b837d375c9ed92c1bf34920a.png

8.2 数据框的列名修改

data.columns = ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1']

74231fee9aace09dd678ec3091d0f42b.png

8.3 修改数据框或者指定列的类型

data['B1'] = data['B1'].astype('int')  # int 类型导致小数点后面被舍弃了

6bae0cd80df0b1ed6e9daae4d975928d.png

9. mysql数据库操作

import sqlalchemy# 读取
conn = sqlalchemy.create_engine('mysql+pymysql://用户名:密码@IP/数据库名?charset='数据库编码')
da = pd.read_sql("SELECT * FROM 表名;",conn)  #双引号里可以放入sql语句
Ps:若是类似LIKE '%文字%' 的结构,则需要改成LIKE '%%文字%%'# 写入pd.io.sql.to_sql(dataframe, '表名', conn, schema='数据库名', if_exists='append', index=False) # index=False表示不把索引写入

10. 遍历计算

只将遍历计算作用在某一列上

data['G1'] = data['G1'].astype(str).apply(lambda x : 'ZZ'+str(x))  # spply里面可以定义匿名函数

7b371012f1f65aaa10c0047440ab05c5.png

直接将整个dataframe的每一列都套用函数进行遍历计算

data = data.apply(lambda x : str(x)+1) # 只能用于当操作可以适用于每个字段的类型的情况

11. 分组和统计个数

import pandas as pd
import numpy as np
data = pd.DataFrame({'H':np.random.randint(2, 8, size=10), 'J':np.random.randint(0, 5, size=10),'K':np.random.uniform(size=10)})

d7d59b53a94df09731e29a6dc8921a1d.png
# 分组
data.groupby('H').sum()        # 对H进行分组并展示剩余数值类型列的和
data.groupby('H')['J'].sum()   # 对H进行分组并展示相对应的J列的和
data.groupby(['H', 'J']).sum() # 对H,J进行分组并展示相对应的剩余数值类型列的和

d0b857b9122933e06884c9be89a098c7.png
# 统计data中H列每个值出现的次数
result1 = data['H'].value_counts()       # 按照计数量的大小排序
以下和上面得到结果一致
result2 = data.groupby('H')['H'].count() # 对H进行分组并展示相对应的H列的个数

d5661cb11f998ded9213876c8c4dbbe6.png

12. 数据塑性——长宽表变换

import pandas as pd
import numpy as np
data_start = pd.DataFrame({
"城市":["广州","深圳","上海","杭州","北京"],
"销售1部":[877,932,970,340,234],
"销售2部":[453,899,290,213,555],
"销售3部":[663,380,223,900,330],
"销售4部":[505,800,200,252,330] })

6ace3beddcae770e4ed02db340c99b0c.png

12.1 宽变长

在数据分析中,经常需要长表数据去绘制图表或者训练模型,而当你拿到的数据数汇总后的表格时,便可以采用宽表转长表的方式

data_long = data_start.melt(
id_vars=["城市"],    # 保留的字段
var_name="部门",     # 分类变量
value_name="数量"    # 度量值字段)

d8db1f409f593d7fc76b29e138f65851.png

12.2 长变宽

用于数据汇总,比较不常用

data_long.pivot_table(
index=["城市"],         #行(可以是多类别变量)
columns=["部门"],       #列(可以是多类别变量)
values=["数量"]         #值)

18fc697ffb8d0ae835dd76a6ed94678d.png

关于 pandas 数据处理的常用操作就分享到这里啦,有其他常用便捷的方法欢迎在下方留言哦~

如果对你有用的话,随手点个赞哟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java元注解作用及使用

元注解是负责对其它注解进行说明的注解&#xff0c;自定义注解时可以使用元注解。Java 5 定义了 4 个注解&#xff0c;分别是 Documented、Target、Retention 和 Inherited。Java 8 又增加了 Repeatable 和 Native 两个注解。这些注解都可以在 java.lang.annotation 包中找到。…

灰色预测法 —— matlab

目录 1.简介 2.算法详解 2.1 生成累加数据 2.2 累加后的数据表达式 2.3 求解2.2的未知参数 3.实例分析 3.1 导入数据 3.2 进行累加数据 3.3 求解系数 3.4 预测数据及对比 完整代码 1.简介 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测&a…

jpa 自定义sql if_SpringBoot整合JPA实现多数据源及读写分离

SpringBoot整合JPA实现多数据源及读写分离项目地址&#xff1a;https://github.com/baojingyu/spring-boot-jpa-dynamic-datasource本项目使用 SpringBoot 和 SpringData JPA 实现多数据源&#xff0c;动态数据源的切换。前段时间写 MySQL 主从复制的技术分享&#xff0c;我就在…

时间序列分析简介

目录 1.引言 2.时间序列的定义 3.时间序列分析方法 &#xff08;1&#xff09;描述性时间序列分析 &#xff08;2&#xff09;统计时序分析 时序分析方法 时域分析方法 1.引言 最早的时间序列分析可以追溯到7000年前&#xff0c;古埃及把尼罗河涨落的情况逐天记录下来&a…

时间序列的预处理

目录 一、特征统计量 1.概率分布 2.特征统计量 二、平稳时间序列的定义 严平稳与宽平稳的关系 三、平稳时间序列的统计性 四、平稳性的重大意义 五、平稳性检验 时序图检验 自相关图检验 R绘图 一、特征统计量 平稳性是某些时间序列具有的一种统计特征要描述清楚这个…

R中‘ts‘ object must have one or more observations

错误如下&#xff1a; 为什么会出现&#xff0c;如下错误是因为我读取数据是&#xff0c;没有对数据进行分割&#xff0c;而是直接读取&#xff0c;然后使用的 最初读取方式为&#xff1a; 改变后的读取方式&#xff1a; 此时&#xff0c;再调用上面提示错误的那行代码试试&am…

Java字符编码介绍

在计算机中&#xff0c;任何的文字都是以指定的编码方式存在的&#xff0c;在 Java 程序的开发中最常见的是 ISO8859-1、GBK/GB2312、Unicode、 UTF 编码。 Java 中常见编码说明如下&#xff1a; ISO8859-1&#xff1a;属于单字节编码&#xff0c;最多只能表示 0~255 的字符范…

灰色预测法 —— python

目录 1.简介 2.算法详解 2.1 生成累加数据 2.2 累加后的数据表达式 2.3 求解2.2的未知参数 3.实例分析 3.1 导入数据 3.2 进行累加数据 3.3 求解系数 3.4 预测数据及对比 完整代码 1.简介 灰色系统理论认为对既含有已知信息又含有未知或非确定信息的系统进行预测&am…

python爬虫怎么爬小说_python爬虫爬取笔趣网小说网站过程图解

首先&#xff1a;文章用到的解析库介绍 BeautifulSoup&#xff1a; Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱&#xff0c;通过解析文档为用户提供需要抓取的数据&#xff0c;因为简单&#xff0c;所以不需要多少代…

时间序列的预处理之纯随机性检验

目录 1.纯随机序列的定义 2.性质 3.纯随机性检验 1.纯随机序列的定义 纯随机序列也称为白噪声序列&#xff0c;满足如下性质&#xff1a;2.性质 纯随机性&#xff08;无记忆性&#xff09;方差齐性举例&#xff0c;随机生成1000个白噪声序列 用正态分布序列 rnorm(数量&am…

ARMA模型的性质之方法性工具

目录 一、差分 Xt 二、延迟算子 延迟算子的性质 p阶差分 k步差分 三、线性差分方程 齐次线性差分方程的解 非齐次线性差分方程的解 时序分析与线性差分方程的关系 一、差分 Xt 二、延迟算子 延迟算子类似于一个时间指针&#xff0c;当前序列值乘以一个延迟算子&…

python如何下载库_python中如何下载库

python下载安装库的方法&#xff1a; 1、在线安装 在cmd窗口直接运行&#xff1a;pip install 包名&#xff0c;如 pip install requests 注意&#xff1a;这种方式安装时会自动下载第三方库&#xff0c;安装完成后并不会删除&#xff0c;如需删除请到它的默认下载路径下手动删…

ARMA模型的性质 1

目录 1.wold分解定理&#xff08;1938&#xff09; 2.AR模型 2.1定义&#xff1a; AR(p) 有三个限制条件&#xff1a; 中心化 AR(p) 模型 2.2 AR模型的平稳性判别 序列拟合函数 R 举例 1.wold分解定理&#xff08;1938&#xff09; 对于任何一个离散平稳序列 {xt} 他都…

python 二维码_Python提取支付宝和微信支付二维码

本文首发于我的个人博客&#xff0c;更多 Python 和 django 开发教程&#xff0c;请访问 追梦人物的博客。支付宝或者微信支付导出的收款二维码&#xff0c;除了二维码部分&#xff0c;还有很大一块背景图案&#xff0c;例如下面就是微信支付的收款二维码&#xff1a;有时候我们…

ARMA模型的平稳性判别(续)

目录 1.特征根判别法 AR(p)模型对应齐次方程特征根与回归系数多项式根的关系&#xff1a; 2.平稳域判别 &#xff08;1&#xff09;AR(1)(一阶)模型平稳域 &#xff08;2&#xff09;AR(2)(二阶)模型平稳域 3.举例 4.函数展开成幂级数——麦克劳林级数 小结 1.特征根判…

form表单中根据值判断是否disabled_Java 0基础入门 (Html表单、表单元素)

上一篇&#xff1a;Java 0基础入门 (Html标签的使用)表单在网页中主要负责数据采集功能。一.表单实际应用场景百度搜索5173注册如上两张图&#xff0c;图中的黑色线条是我画上去的&#xff0c;如果按照黑线&#xff0c;在Excle中画出这两张表单&#xff0c;相信大家都可以也不是…

ARMA模型性质之平稳AR模型得统计性质

目录 1.均值 Green函数定义 Green函数递推公式 2.方差 举例&#xff1a; 方法1&#xff1a; 方法2&#xff1a; 3.协方差函数 举例1&#xff1a; 举例2&#xff1a; 4.自相关系数 常用的ARA模型自相关系数递推公式&#xff1a; AR模型自相关系数的性质 举例 5.偏自…

LDA(线性判别分析(普通法))详解 —— python

在这里和大家道个歉&#xff0c;因为我有一篇matlab的LDA和这篇内容大致相同&#xff0c;我就犯懒了&#xff0c;直接复制&#xff0c;没想到公式复制过来全变成了图片&#xff0c;然后造成了&#xff0c;排版有问题&#xff0c;非常难看&#xff0c;真的很抱歉&#xff01;&am…

wordpress 通过域名无法访问_VPS主机和宝塔面板搭建WordPress网站教程

这是一篇Wordpress建站教程&#xff0c;记录了我在VPS主机上&#xff0c;通过使用宝塔面板&#xff0c;搭建Wordpress网站或个人博客的详细步骤&#xff0c;外贸新人或小白在建立网站的时候可以作为参考。WordPress是全球最流行的建站程序&#xff0c;而且是免费的。用Wordpres…

猜数字小游戏

java代码 猜数字小游戏 程序分析 根据提示输入内容 获取输入的内容 使用for循环进行遍历使用if循坏进行数值的判断 输出结果 完整代码 import java.util.Scanner; import java.util.Random; public class mulTip{public static void main(String[] args){System.out.println…