【数据处理】 python 常用操作整理

2023-11-16

python 数据分析常用操作

  这是本人在数据分析中,记不住,反复查询的一些命令汇总,在此做个归纳汇总,并不定期更新。

Dataframe

import pandas as pd
合并DF

  需求:有的时候需要将多个列相同的数据集(如别人的训练集和测试集)合并后再分析。
  代码:

pd.concat([df1, df2])

  参考:https://www.cnblogs.com/guxh/p/9451532.html

重置DF索引

  需求:重组后的DF需要重置索引,通常发生在选择或排序操作后。
  代码:

train = train.reset_index(drop=True)

  参考:https://blog.csdn.net/qq_36523839/article/details/80640139

选取DF前几列

  需求:分析的某个步骤中仅对DF的某些列进行分析。
  限制:不知道列名。
  代码:

sub_train = train.iloc[:,0:2]
对DF插入一列

  需求:分析产生的派生数据需要放到DF里面。
  限制:指定插入列的位置
  代码:

df.insert(1,'d',np.ones(4))

  参考:https://blog.csdn.net/brucewong0516/article/details/82493080

DF完全显示

  需求:有些行、列太长了,显示不全,但预览时想看。
  代码:

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)

  参考:https://blog.csdn.net/qq_34862636/article/details/102581675

DF取某一列的唯一值,并可视化其分布

  需求:本来用numpy的unique就可以解决,但如果要取的列不是数字,而是字符串,这个时候用DF的操作更好。
  代码:

data = pd.read_csv('event.csv',dtype='str',header = 0)
city_set = data['city'].value_counts()
city_set[0:20].plot(kind='bar', title='Events in different city')
plt.show()

在这里插入图片描述

DF类数据库查询

  需求:DF本质就是一张表,如同关系数据库一般,有的时候要对数据进行较为复杂的查询。

DF条件查询 (Where)
choose_data = data[data['col'] == val] #单表单条件
choose_data = data[(data['col1'] == val1) & (data['col2'] == val2)] #单表多条件

  参考:https://bbs.pinggu.org/thread-4608666-1-1.html

DF判断是否在集合里(IN)
valid_year = np.arange(2010,2019,1) #条件
idx = data[data.year.isin(valid_year)].index #符合条件的索引
valid_data = data.iloc[idx,:] #按索引取值

  参考:https://www.cnblogs.com/shadow1/p/10700264.html

DF做表连接 (join)
data = data.set_index('event', drop=True) #col = ['user','event']
data2 = data2.set_index('event', drop=True) #col = ['event','venue','time','group']
d = data.join(data2,on='event',how='left') #col = ['event','venue','time','group']
d = d.reset_index(drop=False)
d = d[['user','event','time','venue','group']] #col = ['user','event','time','venue','group']

  参考:https://blog.csdn.net/claroja/article/details/71023167

DF按需排序 (Order by)

  需求:划分数据集时按时间划分,得先排序。
  限制:按指定列顺序排序,升序
  代码:

data = data.sort_values(by=['user'],axis=0, ascending=True)

  参考:https://blog.csdn.net/sinat_22147265/article/details/81284688

DF分类汇总 (Group by)

  需求:同数据库中的分类汇总,以计数的汇总为例
  代码:

sc = sub_train.groupby(['user','item']).count()

  参考:http://everyang.net/787/

DF去重 (Distinct)

  需求:通常根据不同的需求,按部分重复(某几列)和全重复进行去重。
  代码:

testlist = list(test_data[test_data['user']==user]['item'].drop_duplicates()) #去重保留第一个

  参考:https://www.cnblogs.com/zenan/p/8616508.html

DF删除空行

  需求:通常根据不同的需求,删除空行。
  代码:

df=df[~(df['col'].isnull())] #删掉空行
 
df=df.dropna(axis=0)  #删除有空值的行,使用参数axis=0
 
df=df.dropna(axis=1)  #删除有空值的列,使用参数axis=1

  参考:https://blog.csdn.net/weixin_45852947/article/details/119453881

DF 根据已有的列通过运算得到派生列

  需求:通过多个列运算得到目标值
  代码:

real_cost = JHSH_data.apply(lambda x: float(x['优惠金额']) - float(x['商户分摊成本1']), axis = 1)
将数据保存至同一excel不同sheet中

  需求:直接用pd.to_excel()指定sheet_name时,即使指定sheet_name也没用,后一次的写入数据会覆盖前一次写入的数据,解决方法如下,借助pandas中的ExcelWriter方法;
  代码:

# 方法1,推荐方法
 with pd.ExcelWriter('test.xlsx') as writer:
     data.to_excel(writer, sheet_name='data')
     data2.to_excel(writer, sheet_name='data2')
 
 # 写法2
 writer = pd.ExcelWriter('test.xlsx')
 data.to_excel(writer, sheet_name='data')
 data.to_excel(writer, sheet_name='data2')
 writer.save()
 writer.close()

Numpy

import numpy as np
NP随机初始化

  需求:对初值进行随机赋值。
  代码:

P = np.random.uniform(low=0,high=1,size=[N,d]) #N*d的矩阵,值在0~1之间
userP[u]=np.random.normal(0,0.01,dimension) #d维向量,正态分布X~N(0,0.01)随机赋值

  参考:https://www.cnblogs.com/JetReily/p/9398148.html

Dictionary

字典遍历

  需求:字典数据结构一般存储稀疏矩阵比较方便,能节省空间。
  代码:

for key,value in dicts.items():
    print('key is:',key,'value is',value)

  参考:https://blog.csdn.net/u010589524/article/details/86499394

字典一键对应多值

  需求:通常列与列之间的交互是多对多的关系,可由一键多值的字典表达出来。
  代码:

from collections import defaultdict
rating = defaultdict(set)
    for i in range(0,len(train)):
	    user = train.iloc[i]['user']
	    item = train.iloc[i]['item']
	    score = train.iloc[i]['score']
	    rating[user].add(item)

OS

判断文件夹是否存在,没有就创建

  需求:由程序格式化创建文件夹,方便数据归档
  代码:

if os.path.exists('./myfile'):
    pass
else:
    os.mkdir('./myfile')

  参考:https://www.cnblogs.com/VseYoung/p/9941873.html

Time

时间戳转日期
import time
timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
print(time.strftime("%Y/%m/%d %H:%M:%S", timeArray))

  参考:https://www.cnblogs.com/jfl-xx/p/8024596.html
…未完待续,持续更新中…

画图

图片高清保存,且完整显示
plt.savefig('Events in different city',dpi=300, bbox_inches = 'tight')

特定函数

解压函数
def unzip_file(zip_src,dst_dir):
    r = zipfile.is_zipfile(zip_src)
    
    if r:     
        fz = zipfile.ZipFile(zip_src, 'r')
        for file in fz.namelist():
            fz.extract(file, dst_dir) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数据处理】 python 常用操作整理 的相关文章

  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • 如何合并非常大的 numpy 数组?

    我会有很多Numpy https docs scipy org doc numpy 1 14 0 reference arrays https docs scipy org doc numpy 1 14 0 reference arrays
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • PHP内置函数intval()使用不当的安全漏洞分析

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 描述 intval函数有个特性 直到遇上数字或正负符号才开始做转换 再遇到非数字或字符串结束时 结束转换 在某些应用程序里由于对intval函数这个特性认识不够 错误的
  • react中使用splice函数去删除数组的某一项

    1 splice函数 splice 方法向 从数组中添加 删除项目 然后返回被删除的项目 slice 方法可从已有的数组中返回选定的元素 所以 在使用的时候 就要注意的是 splice返回的是被删除的项目 2 举一个我在react中使用的小
  • 单片机预备知识(电平、进制转换、字节、数据类型)

    参考 郭天祥十天带你精通51单片机 网址 https www bilibili com video BV1DW411a7mz spm id from 333 788 videocard 0 目录 电平特性 二进制 进制转换 1K字节等于多少
  • Ubuntu18.04 安装cmake-3.18.0,报错openssl

    1 问题描述 Downloads wget https cmake org files v3 18 cmake 3 18 0 tar gz Downloads tar xf cmake 3 18 0 tar gz Downloads cd
  • mvvm框架是什么

    MVVM是Model View ViewModel的简写 它本质上就是MVC Model View Controller 的改进版 在开发过程中 由于需求的变更或添加 项目的复杂度越来越高 代码量越来越大 此时我们会发现MVC维护起来有些吃
  • mysql表操作-约束删除、用户填加、授权和撤权

    目录 一 表的约束删除 1 查看所有表的约束条件 2 删除主键 3 删除唯一键 4 删除check键值 5 删除check键值 6 删除not null键值并删除check键值 7 删除键外值 8 检查表的约束条件是否存在 二 设置数据库密
  • 数据通信介绍

    数据通信方式有两种 串行通信与并行通信 一 串行通信 串行通信是指数据的各位在同一根数据线上逐位发送和接收 如下图所示 它可以按照数据传送方向和通信方式来划分 如果按照数据传送方向分类 则分为以下方式 单工 数据传输只支持数据在一个方向上传
  • 链接库的时候,提示load shared libraries error,xxx file too short

    该问题主要是提示 load shared libraries error xxx file too short 软连接链接问题 原因 程序链接的动态库中有软连接 但是软连接没有 l 标识 被识别成了实际的动态库文件 软连接文件又太小 所以就
  • 使用 vue-router 切换页面时怎么设置过渡动画

    如何实现切换页面时的过渡动画 背景 今天在编写页面时 看到页面没有任何效果就只是直入直出 完全没有一点逼格 所以想要实现类似于原生app的那种切换页面时的特效 遂开始google 发现网上各种方案都是各有优缺点 于是整理了自认为优雅的方案并
  • warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]

    warning gets is deprecated declared at usr include stdio h 638 Wdeprecated declarations 5 c In function getinfo 5 c 20 2
  • Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布 + jenkins节点设置

    最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑 特意记录下来方便有需要的人 进入正题 一 安装Jenkins 1 Mac上安装Jenkins 遇到到坑 因为 Jenkins 的pkg安装包默认安装位置为shar
  • 学习Python:探索无限可能

    Python是一种简洁而强大的编程语言 广泛应用于各个领域 从Web开发到数据分析 人工智能和科学计算 学习Python不仅可以提高编程技能 还能为你打开无限的创造力和发展机会 在本文中 我将介绍一些学习Python的重要用途 并提供相应的
  • 链家网页爬虫_爬虫实战1-----链家二手房信息爬取

    经过一段机器学习之后 发现实在是太枯燥了 为了增添一些趣味性以及熟练爬虫 在之后会不定时的爬取一些网站 旨在熟悉网页结构 尤其是HTML的元素 ajax存储 json 熟练使用pyspider scrapy两大框架 掌握基本的request
  • Java-向下转型-instanceof 关键词

    Java 向下转型 instanceof 关键词 1 父类对象转型为子类 package com lmwei p10 public class PersonTest public static void main String args 多
  • [刷题记录]牛客面试笔刷TOP101(二)

    一 传送门 刷题记录 牛客面试笔刷TOP101 一 HY PIGIE的博客 CSDN博客 目录 1 合并二叉树 2 二叉树的镜像 3 判断是否为二叉搜索树 4 判断是不是完全二叉树 1 合并二叉树 合并二叉树 牛客题霸 牛客网 nowcod
  • cpolar 内网穿透FTP Server

    由于FTP协议是个多端口协议 它需要侦听本地TCP 21端口和一个数据传输端口段 1024 65535 所以通常难以穿透 以下为cpolar给出的解决方案 1 创建FTP隧道 在本地安装配置cpolar内网穿透后 创建隧道 cpolar f
  • 关于32单片机IO口8种状态的理解

    最近接触了32单片机 关于对于IO口的学习想记录下来 有什么不对的地方 希望能指出来 进行改正 32单片机IO口共有八种状态 分别是 输入 1 输入浮空 2 输入上拉 3 输入下拉 4 模拟输入 输出 1 开漏输出 2 推挽输出 3 推挽复
  • ElasticSearch第十二讲 ES 集群脑裂问题

    ES集群出现脑裂 脑裂这个词 我们肯定不会陌生 在zk集群 mq集群搭建就考虑过这个问题 为保证部署在不同机房的集群始终保证任何时候只会有一个Leader来协调处理问题 当集群其他机器或者主节点出现故障时 保证重新选举出主节点不影响整个系统
  • vue三种常用获取input值写法

    1 v model 表单输入绑定 使用v model创建双向数据绑定 用来监听用户的输入事件以更新数据 并对一些极端场景进行一些特殊处理
  • 【数据处理】 python 常用操作整理

    python 数据分析常用操作 这是本人在数据分析中 记不住 反复查询的一些命令汇总 在此做个归纳汇总 并不定期更新 Dataframe import pandas as pd 合并DF 需求 有的时候需要将多个列相同的数据集 如别人的训练