13个Pandas实用技巧,请收好

python | Pandas/bokeh 实现交互数据可视化报告 文章目录python | Pandas/bokeh 实现交互数据可视化报告前言需求toolsPythonPandasBokeh需求->代码实现处理 .csv 格式的表格计算各类型每周总用时目标: 上述列表转化成如下列表实现分类制表制图经典的Matplotlib本报告使用 bokehbokeh 生成图片bokeh HTML 排版及插入视窗计算频率的 function制表根据表格内容输出话语心 ... 阅读详情

归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析。文章很短,不用收藏就能Get~

1.计算变量缺失率

df=pd.read_csv('titanic_train.csv')
def missing_cal(df):
    """
    df :数据集
    
    return:每个变量的缺失率
    """
    missing_series = df.isnull().sum()/df.shape[0]
    missing_df = pd.DataFrame(missing_series).reset_index()
    missing_df = missing_df.rename(columns={'index':'col',
                                            0:'missing_pct'})
    missing_df = missing_df.sort_values('missing_pct',ascending=False).reset_index(drop=True)
    return missing_df
missing_cal(df)

(提示:可以左右滑动代码)

如果需要计算样本的缺失率分布,只要加上参数axis=1.

2.获取分组里最大值所在的行方法

分为分组中有重复值和无重复值两种。无重复值的情况。

df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})
df

df.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]

先按Mt列进行分组,然后对分组之后的数据框使用idxmax函数取出Count最大值所在的列,再用iloc位置索引将行取出。有重复值的情况

df["rank"] = df.groupby("ID")["score"].rank(method="min", ascending=False).astype(np.int64)
df[df["rank"] == 1][["ID", "class"]]

对ID进行分组之后再对分数应用rank函数,分数相同的情况会赋予相同的排名,然后取出排名为1的数据。

3.多列合并为一行

df = pd.DataFrame({'id_part':['a','b','c','d'], 'pred':[0.1,0.2,0.3,0.4], 'pred_class':['women','man','cat','dog'], 'v_id':['d1','d2','d3','d1']})

df.groupby(['v_id']).agg({'pred_class': [', '.join],'pred': lambda x: list(x),
'id_part': 'first'}).reset_index()

4.删除包含特定字符串所在的行

df = pd.DataFrame({'a':[1,2,3,4], 'b':['s1', 'exp_s2', 's3','exps4'], 'c':[5,6,7,8], 'd':[3,2,5,10]})
df[df['b'].str.contains('exp')]

5.组内排序

df = pd.DataFrame([['A',1],['A',3],['A',2],['B',5],['B',9]], columns = ['name','score'])

介绍两种高效地组内排序的方法。

df.sort_values(['name','score'], ascending = [True,False])
df.groupby('name').apply(lambda x: x.sort_values('score', ascending=False)).reset_index(drop=True)

6.选择特定类型的列

drinks = pd.read_csv('data/drinks.csv')
# 选择所有数值型的列
drinks.select_dtypes(include=['number']).head()
# 选择所有字符型的列
drinks.select_dtypes(include=['object']).head()
drinks.select_dtypes(include=['number','object','category','datetime']).head()
# 用 exclude 关键字排除指定的数据类型
drinks.select_dtypes(exclude=['number']).head()

7.字符串转换为数值

df = pd.DataFrame({'列1':['1.1','2.2','3.3'],
                  '列2':['4.4','5.5','6.6'],
                  '列3':['7.7','8.8','-']})
df
df.astype({'列1':'float','列2':'float'}).dtypes

用这种方式转换第三列会出错,因为这列里包含一个代表 0 的下划线,pandas 无法自动判断这个下划线。为了解决这个问题,可以使用 to_numeric() 函数来处理第三列,让 pandas 把任意无效输入转为 NaN。

df = df.apply(pd.to_numeric, errors='coerce').fillna(0)

8.优化 DataFrame 对内存的占用

方法一:只读取切实所需的列,使用usecols参数

cols = ['beer_servings','continent']
small_drinks = pd.read_csv('data/drinks.csv', usecols=cols)

方法二:把包含类别型数据的 object 列转换为 Category 数据类型,通过指定 dtype 参数实现。

dtypes ={'continent':'category'}
smaller_drinks = pd.read_csv('data/drinks.csv',usecols=cols, dtype=dtypes)

9.根据最大的类别筛选 DataFrame

movies = pd.read_csv('data/imdb_1000.csv')
counts = movies.genre.value_counts()
movies[movies.genre.isin(counts.nlargest(3).index)].head()

10.把字符串分割为多列

df = pd.DataFrame({'姓名':['张 三','李 四','王 五'],
                   '所在地':['北京-东城区','上海-黄浦区','广州-白云区']})
df
df.姓名.str.split(' ', expand=True)

11.把 Series 里的列表转换为 DataFrame

df = pd.DataFrame({'列1':['a','b','c'],'列2':[[10,20], [20,30], [30,40]]})
df

df_new = df.列2.apply(pd.Series)
pd.concat([df,df_new], axis='columns')

12.用多个函数聚合

orders = pd.read_csv('data/chipotle.tsv', sep='\t')
orders.groupby('order_id').item_price.agg(['sum','count']).head()

13.分组聚合

import pandas as pd
df = pd.DataFrame({'key1':['a', 'a', 'b', 'b', 'a'],
    'key2':['one', 'two', 'one', 'two', 'one'],
    'data1':np.random.randn(5),
     'data2':np.random.randn(5)})
df

for name, group in df.groupby('key1'):
    print(name)
    print(group)

dict(list(df.groupby('key1')))

通过字典或Series进行分组

people = pd.DataFrame(np.random.randn(5, 5),
     columns=['a', 'b', 'c', 'd', 'e'],
     index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])
mapping = {'a':'red', 'b':'red', 'c':'blue',
     'd':'blue', 'e':'red', 'f':'orange'}
by_column = people.groupby(mapping, axis=1)
by_column.sum()

欢迎扫码关注:

odoo13 盘pandas使用笔记---ImportError: DLL load failed import pandas 在个人电脑上(python3.7.4,odoo13)可正常运行,在服务器上总导入不了,最后发现1.0.3版本不行,换成pandas==1.0.1 服务器okb 异常如上。 import pandas._libs.window.aggregations as window_aggregations ImportError: DLL load failed: %1 不是有效 在 windows 系统上 python 环境安装 pandas 的时候,遇到 import 失败的问 阅读详情

相关推荐

25 个 Pandas 实用技巧

显示已安装的版本 输入下面的命令查询pandas版本: 1In[7]:pd.__version__ 2Out[7]:0.24.2 如果你还想知道pandas所依赖的模块的版本,你可以使用show_versions()函数: 1In[9]: 2pd.show_versions() 3 4INSTALLEDVERSIONS 5------------------ 6commit:None 7python:3.7.3.final.0 8python-bits...

JanLEE 456

pandas-bokeh数据可视化技巧

pandas-bokeh工具包完美的结合了pandas、bokeh这两个工具包的作图方法, 让你用最简洁的代码和最少的参数, 做出交互式动态图表。满足工作和学习需求, 投入时间最少。

Python-PandasBokeh集成Python绘图

Bokeh Plotting Backend for Pandas and GeoPandas

pandas_bokeh:投资量化平台可视化的利器

那真是相当完美,wxPython也带了一个formbuilder,也挺方便的,尤其对于复杂的,控件多的界面。qlib里内置的分析框架是plotly,就点类似 xwPython vs pyQt,pyQt很强大,但相对复杂,在基础功能相当的情况下,选择简单的东西。bokeh其实还有非常丰富的功能,支持tabs,各种widgets,但目前量化可视化而言,这些就够用了。无论是基准分析,还是投资组合回测结果分析,无外乎时间序列,风险收益,指标分析,相关性分析等等。延迟满足,相对于即时满足。似乎延迟满足是一种正确。

weixin_38175458的博客 796

银河麒麟V10安装docker

最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1

m0_38004228的博客 4908

使用STM32F103C8T6控制舵机丝滑运转附代码

使用STM32F103C8T6控制舵机丝滑运转原理和案例,附代码。

m0_63566592的博客 4238

超详细,Python库 Bokeh 数据可视化实用指南

大家好,今天跟大家分享的是交互式可视化神器 Python Bokeh 的详细使用教程,欢迎收藏学习,喜欢点赞支持,技术交流文末获取。目录如下: 什么是 Bokeh Bokeh 是 Python 中的交互式可视化库。Bokeh提供的最佳功能是针对现代 Web 浏览器进行演示的高度交互式图形和绘图。Bokeh 帮助我们制作出优雅、简洁的图表,其中包含各种图表。 Bokeh 主要侧重于将数据源转换为 JSON 格式,然后用作 BokehJS 的输入。Bokeh的一些最佳功能是: 灵活性: Bokeh 也

Python学习与数据挖掘 2万+

用 SAP CDS View 和 Fiori Elements 快速打造 CRM Service Order 应用──十分钟跑通从数据模型到上线的全流程

通过CDS 视图 + Fiori Elements的组合,我们得以在极短时间内把传统 CRM Service Order 场景迁移到现代化的 Fiori 界面,而且代码量极小、可维护性高。若后续需要离线能力,可考虑将同一 OData 服务暴露给 Mobile Services,再配合 MDK 或 UI5 Mobile Toolkit;若要支持复杂审批流,则可以在同一 Launchpad 内嵌入 Process Visibility Dashboard,实现端到端可视化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 393

python可视化工具pandas_bokeh作图技巧详解

史莱克七怪都要去海神岛练级了, 你的职场技能是否储备的够多了呢? 前言: python中有很多可视化的工具包,比如入门级的matplotlib, 进阶级seaborn, 还有可以做出交互图的bokeh、pyechart、plotly、ggplot、pandas-bokeh, 工作中该选择哪个作为自己的主要魂技呢? 学技能是为了解决工作中问题: 功能相同的工具包了解一个就够 在你对上述工具包有一定了解的情况下, 日常一些重复项工作需要作图建议考虑两个方向: - pandas-bokeh: - 优点: 快

python技巧分享 1831

YOLOv8【第十章:多任务扩展深度篇·第18节】不规则工业缺陷分割——针对划痕、裂纹的 Seg 模型调优!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 3982

YOLOv11改进 | Conv改进篇 | 含2种改进,引入DynamicConv替换普通Conv卷积下采样和C3k2_DynamicConv替换C3k2(来自CVPR2024)

本文提出了一种基于DynamicConv动态卷积优化的YOLOv11轻量化模型改进方案。通过引入多专家机制的动态卷积模块,在增加模型参数量的同时保持较低的计算复杂度(FLOPs),有效解决了低FLOPs模型在大规模预训练中的性能瓶颈问题。文章详细介绍了动态卷积的工作原理、核心代码实现,并提供了在YOLOv11中集成DynamicConv和C3k2_GhostModule_DynamicConv模块的完整教程,包括模块添加、配置文件修改和模型训练验证过程。实验结果表明,该方案在保持高效推理速度的同时显著提升了

Ai缝合怪、助力小伙伴高效发论文 538

pandas 读取sqlserver_13个Pandas实用技巧,请收好

点击关注上方“SQL数据库开发”,设为“置顶或星标”,第一时间送达干货。归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析。文章很短,不用收藏就能Get~1.计算变量缺失率df=pd.read_csv('titanic_train.csv')def missing_cal(df): """ df :数据集 return:每个变量的缺失率 "...

weixin_30661579的博客 381

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7269

13个Pandas实用技巧,有点香 !

作者:风控猎人归纳整理了一些工作中常用到的pandas使用技巧,方便更高效地实现数据分析。文章很短,不用收藏就能Get~1.计算变量缺失率df=pd.read_csv('tita...

小詹学python的博客 345

Autosar诊断实战系列23-NRC优先级解析

NRC分类,优先级判断逻辑及测试注意事项介绍。

initiallizer的博客 2619

PCL 平面点云的凹多边形边界提取【2025最新版】

平面点云的凹多边形边界提取及边界轮廓线绘制。博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 7185

整理了 25 个 Pandas 实用技巧,拿走不谢!

本文一共为大家分享25个pandas技巧。显示已安装的版本输入下面的命令查询pandas版本:1In[7]:pd.__version__ 2Out[7]:0.24.2如果你还想知道p...

小詹学python的博客 968

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

13个Pandas技巧

1.计算变量缺失率 df=pd.read_csv('titanic_train.csv') def missing_cal(df): """ df :数据集 return:每个变量的缺失率 """ missing_series = df.isnull().sum()/df.shape[0] missing_df = pd.DataFrame(missing_series).reset_index() missing_df = missing_

平平淡淡,戒急用忍,一生学闭嘴。 459

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

13_Pandas字符串的替换和空白处删除等方法

13_Pandas字符串的替换和空格处删除等方法 在pandas中,准备了处理字符串的方法,以便共同处理pandas.DataFrame的列和行(= pandas.Series)的字符串。 以下的方法与标准Python字符串(str类型对象)的方法相同。 替换 str.replace():替换字符串 空白削除 str.strip():删除左右两侧的空白(开始/结束) str.lstrip...

qq_18351157的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pandas dataframe 表头_[Excel]如果你爱Excel,请学好pandas

现在坐办公室的各种大小团体里,都会有一个“懂Excel的人”,可能那个人是团体里的一员,也可能是和这个团队关系比较好的一个热心人,但总之,你的身边会有这么一个人。如果你环顾四周也没发现,那可能你就是那个懂Excel的人。从基本的打印添加表头,到筛选排序,再到vlookup各种花式,Excel确实是促进生产力的一大利器,不过这个工具为了保证易用性也做了很多的妥协,包括但不限于:没有强制用户使用数据表...

weixin_39948111的博客 1607

pandas获取全部列名_一文分享25 个 Pandas 实用技巧

来源:机器学习算法与Python学习本文约2639字,建议阅读6分钟。本文一共为大家分享25个pandas技巧。显示已安装的版本输入下面的命令查询pandas版本:1In[7]:pd.__version__2Out[7]:0.24.2如果你还想知道pandas所依赖的模块的版本,你可以使用show_versions()函数: 1In[9]: 2pd.show_versions() 3 4IN...

weixin_42109732的博客 1790
上一篇: 我以前一直没有真正理解支持向量机,直到我画了一张图!
下一篇: 550 万华人在美人才现状:7 诺奖、300 院士,320 八大常春藤高校终身正教授......
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值