Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。Pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas的目标是成为 Python数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年不懈的努力,Pandas离这个目标已经越来越近了。

接下来是在使用Pandas处理数据时的一些小技巧,也许能在日常工作数据处理中帮助提高效率:

首先创建一个DataFrame:

import pandas as pd
df = pd.DataFrame([{'a':1, 'b':2, 'c':3}]).T.reset_index()
df.columns = ['label','value']
df

1 添加进度条(tqdm)

from tqdm import tqdm
tqdm.pandas(desc="Process Bar")
df['pair'] = df.progress_apply(lambda x: (x['label'],x['value']), axis=1)
df


tqdm在其他循坏体种也可以展示进度,以下是一个简单例子:

for i in tqdm(range(5)):print(i)

2 一列拓展多列

df[['label_2','_value_2']] = df.apply(lambda x: x['pair'], axis=1, result_type='expand')
df

虽然pd.DataFrame和pd.Series两种数据结构在apply方法的使用上很相似,但是axisresult_type这些参数仅适用于pd.DataFrame。

3 dask并行计算

import dask.dataframe as dd
from dask.diagnostics import ProgressBar
ddf = df.copy()with ProgressBar():  # 添加进度条ddf[['label_3','_value_3']] = dd.from_pandas(ddf, npartitions=8).map_partitions(lambda df: \df.apply(lambda x: x['pair'], axis=1, result_type="expand"), meta={0:'str',1:'f8'}).compute()
ddf


dask能够使pandas的DataFrame批量进行计算时采用多内核并行计算,充分利用CPU资源以提高运行速度。
① ProgressBar可为计算提供进度条。
npartitions为并行计算线程数,一般为计算机核心数。
③ 用dask的apply函数并设置result_type="expand"时,需要一个meta字典,用于明确每个列的数据类型,例如str, int或者 f8

4 保存CSV乱码问题


当我们想要将DataFrame保存成csv文件时,如果其中有中文那么经常会发现打开后乱码。例如上面这个DataFrame,我们用df.to_csv('data.csv')进行文件保存,打开后发现变成了这样:

保存文件时通过增加encoding='utf_8_sig'指定编码格式,即可轻松解决这个问题。

df.to_csv('data.csv', encoding='utf_8_sig')

Pandas DataFrame 使用技巧相关推荐

  1. 25个Pandas最实用技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自 | 深度学习这件小事    0. 准备工作 首先我们需要 ...

  2. 蠎周刊418 ~Pandas DataFrame: 使处理数据令人愉快

    原文: PyCoder's Weekly - Issue #418 200429 Zoom.Quiet(大妈) 用时 42 分钟 完成快译 200429 Zoom.Quiet(大妈) 用时 37 分钟 ...

  3. pandas使用tabulate函数将pandas dataframe以类似于plsql表格的方式打印出来(printing dataframe in tabular format)

    pandas使用tabulate函数将pandas dataframe以类似于plsql表格的方式打印出来(printing dataframe in tabular format) 目录

  4. python将scikit-learn自带数据集转换为pandas dataframe格式

    python将scikit-learn自带数据集转换为pandas dataframe格式 目录 python将scikit-learn自带数据集转换为pandas dataframe格式 #仿真数据

  5. pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe )

    pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe ) 目录

  6. pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )

    pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe ) 目录

  7. pyspark dataframe数据连接(join)、转化为pandas dataframe、基于多个字段删除冗余数据

    pyspark dataframe数据连接(join).转化为pandas dataframe.基于多个字段删除冗余数据 目录 pyspark dataframe数据连接(join).转化为panda ...

  8. plotly可视化表格数据:以表格可视化pandas dataframe

    plotly可视化表格数据:以表格可视化pandas dataframe # plotly可视化dataframe中的表格数据: import plotly as py from plotly.too ...

  9. python将pandas dataframe内容写入ElasticSearch实战

    python将pandas dataframe内容写入ElasticSearch实战 目录 python将pandas dataframe内容写入ElasticSearch实战 索引设置 数据写入 数 ...

最新文章

  1. YARN中的失败分析
  2. 安卓 Handler使用方法
  3. QQ for Linux下载、安装、运行、卸载
  4. 【学习笔记】第三章 python3核心技术与实践--Jupyter Notebook
  5. 最常见的Web服务器市场份额
  6. 【NLP】用腻了 CRF,试试 LAN 吧?
  7. python读取pdf内容转word_卧槽!Pdf转Word用Python轻松搞定!
  8. python:植物大战僵尸源代码
  9. 从音箱入门到高手必看知识(一)—— 音箱初级知识
  10. 解决[“usingcomponents“][“van-button“]: “@vant/weapp/button/index“ 未找到:
  11. 神经网络训练算法的调用,人工神经网络训练案例
  12. Web 前端必会的 PhotoShop 技能
  13. 如何安装正版的Xmanager
  14. 在米帝求学的你,知道每个州的圣诞节特色活动吗!
  15. Silvaco 学习笔记——solar(太阳能电池标准分析)
  16. Unity简单几行代码让玩家水平移动更丝滑真实
  17. Linux C获取本机IP
  18. ListView根据字母排列——仿照微信联系人
  19. oracle的rowid和rownumber
  20. SSH CA Host Key实验

热门文章

  1. c语言难学吗?怎么学C语言?
  2. 腾讯云神笔低代码平台的申请没通过,只能等公测了
  3. 〖Python 数据库开发实战 - Python与MySQL交互篇⑯〗- 项目实战 - 实现用户管理 - 新增用户功能
  4. 机器学习中用到的概率知识_学习机器学习前,你首先要掌握这些概率论基础知识...
  5. 房贷还款方式等额本息等额本金比较和这两种提前还款的区别
  6. 两代荣耀Magic历史性同框,荣耀Magic 2如何践行科技理想主义?
  7. Yuga Labs 收购 CryptoPunks 的始末
  8. 魔百盒CM201-1、CM211-1朝歌ZG_支持UWE5621WiFi驱动_免拆卡刷固件包
  9. uos命令_UOS新手入门:键盘和语言的设置方法
  10. oracle12c 重启服务,OBIEE12c的服务启动/关闭命令