首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据处理利器pandas入门

Pandas主要有两种数据查询选择操作: 基于标签的查询 基于整数的位置索引查询 Pandas在选择,无需使用 date[:, columns] 的形式,先使用 : 选择所有行,再指定 columns...:由于数据中包含了时间信息(date和hour),为了方便操作,我们可以使用以下命令时间设置为索引。...: .apply 上面在创建时间索引便利用了.apply 方法,对date 和 hour分别进行了数据类型的转换,然后两个字符串进行了连接,转换为时间。...即获取每个站点,可以直接获取当前站点的所有要素数据,而且时间索引也按照单个时刻排列,索引不会出现重复值,而之前的存储形式索引会出现重复。索引重复会使得某些操作出错。...上述操作返回的仍然是 MultiIndex,因为此时只有一个站点了,我们可以使用 .xs 方法从MultiIndex转换为Index。

3.6K30

6个pandas新手容易犯的错误

在实际中如果出现了这些问题可能不会有任何的错误提示,但是在应用中却会给我们带来很大的麻烦。 使用pandas自带的函数读取大文件 第一个错误与实际使用Pandas完成某些任务有关。...矢量化是 Pandas 和 NumPy 的核心,它对整个数组而不是单个标量执行数学运算。Pandas 已经拥有一套广泛的矢量化函数,我们无需重新发明轮子,只要关注我们的重点如何计算就好了。...以下这张表是pandas的所有类型: Pandas命名方式中,数据类型名称之后的数字表示此数据类型中的每个数字占用多少位内存。因此,我们的想法是数据集中的每一都转换为尽可能小的子类型。...当我们df保存到csv文件,这种内存消耗的减少会丢失因为csv还是以字符串的形式保存的,但是如果使用pickle保存那就没问题了。 为什么要减小内存占用呢?...我们这里提到的错误大部分和大数据集有关,只有当使用GB大小的数据集可能才会出现。如果你还在处理泰坦尼克这种新手数据集,你可能都不会感觉到有这些问题。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Pandas 2.2 中文官方教程和指南(二十四)

使用分块 通过一个大问题分解为一堆小问题,可以使用分块来实现某些工作负载。例如,单个 CSV 文件转换为 Parquet 文件,并为目录中的每个文件重复此操作。...## 在 pandas使用 if/truth 语句 pandas 遵循 NumPy 的惯例,当你尝试某些内容转换为 bool 时会引发错误。...当使用需要 UDF 的 pandas 方法,内部 pandas 通常会迭代 DataFrame 或其他 pandas 对象。因此,如果 UDF 改变了 DataFrame,可能会出现意外行为。...另请参阅 分类内存使用使用 pandas 进行 if/truth 语句 pandas 遵循 NumPy 的惯例,当你尝试某些东西转换为 bool 时会引发错误。...这个问题的常见症状是出现错误,如: Traceback ...

27100

如果 .apply() 太慢怎么办?

如果我们想要将相同的函数应用于Pandas数据帧中整个的值,我们可以简单地使用 .apply()。Pandas数据帧和Pandas系列(数据帧中的一)都可以与 .apply() 一起使用。...但是,你是否注意到当我们有一个超大数据集,.apply() 可能会非常慢? 在本文中,我们讨论一些加速数据操作的技巧,当你想要将某个函数应用于。...函数应用于单个 例如,这是我们的示例数据集。...这比对整个数据帧使用的 .apply() 函数快26倍!! 总结 如果你尝试对Pandas数据帧中的单个使用 .apply(),请尝试找到更简单的执行方式,例如 df['radius']*2。...编写一个独立的函数,可以NumPy数组作为输入,并直接在Pandas Series(数据帧的)的 .values 上使用它。 为了方便起见,这是本文中的全部Jupyter笔记本代码。

13410

python数据分析——数据分类汇总与统计

关键技术:对于由DataFrame产生的GroupBy对象,如果用一个(单个字符串)或一组(字符串数组)列名对其进行索引,就能实现选取部分列进行聚合的目的。...程序代码如下所示: people.groupby(len).sum() 函数跟数组、列表、字典、Series混合使用也不是问题,因为任何东西在内部都会被转换为数组 key_list = ['one',...可以数据分组,并使用apply和一个能够对各数据块调用fillna的函数即可。...添加行/小计和总计,默认为 False; fill_value = 当出现nan值,用什么填充 dropna =如果为True,不添加条目都为NA的; margins_name = 当margins...若设为right,则表示划分为左开右闭的区间:若设为left,则 表示划分为左闭右开的区间。 label:表示降采样设置聚合值的标签。

15210

Pandas 高性能优化小技巧

但是很多新手在使用过程中会发现pandas的dataframe的性能并不是很高,而且有时候占用大量内存,并且总喜欢罪名归于Python身上(lll¬ω¬),今天我这里给大家总结了在使用Pandas的一些技巧和代码优化方法...在底层的设计中,pandas按照数据类型分组形成数据块(blocks)。pandas使用ObjectBlock类来表示包含字符串列的数据块,用FloatBlock类来表示包含浮点型的数据块。...对于包含数值型数据(比如整型和浮点型)的数据块,pandas会合并这些,并把它们存储为一个Numpy数组(ndarray)。Numpy数组是在C数组的基础上创建的,其值在内存中是连续存储的。...在object中的每一个元素实际上都是存放内存中真实数据位置的指针。 category类型在底层使用整型数值来表示该的值,而不是用原值。Pandas用一个字典来构建这些整型数据到原数据的映射关系。...当一只包含有限种值,这种设计是很不错的。当我们把一转换成category类型pandas会用一种最省空间的int子类型去表示这一中所有的唯一值。 ? object数据类型 ?

2.9K20

pandas库的简单介绍(3)

4 pandas基本功能 4.1 重建索引(见上一篇文章) 4.2 数据选择 pandas的数据选择是十分重要的一个操作,它的操作与数组类似,但是pandas的数据选择与数组不同。...例如列表a[0, 1, 2, 3, 4]中,a[1:3]的值为1,2;而pandas中为1,2,3。 数据选择的方法:1、直接选择;2、使用loc选择数据;3、使用iloc选择数据。...label_i] 根据行列的标签位置选择单个标量值 df.iat[i, j] 根据行列的整数位置选择单个标量值 reindex方法 通过标签选择行和 get_value, set_value方法 根据行和的标签设置单个值...Numpy的通用函数(逐元素数组方法)对pandas对象也有效。...np的abs(绝对值)方法 另外一个常用操作是函数应用到一行或一的一维数组上,DataFrame的apply方法可以实现这个功能,是个很有用的方法。

1.2K10

AI办公自动化:Excel表格数据批量整理分列

A数据进行分类汇总,汇总方式为计数,分类汇总结果保存到Excel文件:F:\AI自媒体内容\AI行业数据分析\AI行业数据来源.xlsx 注意: 每一步都要输出信息 处理异常和错误:确保你的代码能够处理可能遇到的异常...else: first_column_name = df.columns[0] http://logging.info(f"使用第一个列名: {first_column_name}") # 删除第一单元格内容后面的数字...split_data.append(split_items) # 创建一个新的 DataFrame 用于存储拆分后的内容 split_df = pd.DataFrame(split_data) # 拆分后的内容合并回第一...http://logging.info("合并拆分后的内容到第一") df[first_column_name] = split_df.apply(lambda x: ', '.join(x.dropna...()), axis=1) # 拆分后的内容追加到第一当前内容的后面 http://logging.info("拆分后的内容追加到第一当前内容的后面") df_expanded = pd.DataFrame

7410

不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...

2.1 map() 类似Python内建的map()方法,pandas中的map()方法函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个的每一个元素建立联系并串行得到结果。...2.2 apply() apply()堪称pandas中最好用的方法,其使用方式跟map()很像,主要传入的主要参数都是接受输入返回输出。...譬如这里我们编写一个使用到多数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()apply()在串行过程中实际处理的是每一行数据...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样原始数据按照某个或某些离散型的进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...可以注意到虽然我们使用reset_index()索引还原回变量,但聚合结果的列名变成红色框中奇怪的样子,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()来为聚合后的每一赋予新的名字

4.9K10

不再纠结,一文详解pandas中的map、apply、applymap、groupby、agg...

) print(data.shape) 2.1 map() 类似Python内建的map()方法,pandas中的map()方法函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个的每一个元素建立联系并串行得到结果...2.2 apply() apply()堪称pandas中最好用的方法,其使用方式跟map()很像,主要传入的主要参数都是接受输入返回输出。...譬如这里我们编写一个使用到多数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()apply()在串行过程中实际处理的是每一行数据...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样原始数据按照某个或某些离散型的进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...reset_index()索引还原回变量,但聚合结果的列名变成红色框中奇怪的样子,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()来为聚合后的每一赋予新的名字:

4K30

(数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg

2.1 map()   类似Python内建的map()方法,pandas中的map()方法函数、字典索引或是一些需要接受单个输入值的特别的对象与对应的单个的每一个元素建立联系并串行得到结果,譬如这里我们想要得到...● 多数据   apply()最特别的地方在于其可以同时处理多数据,譬如这里我们编写一个使用到多数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中...(当调用DataFrame.apply()apply()在串行过程中实际处理的是每一行数据而不是Series.apply()那样每次处理单个值),注意在处理多个值要给apply()添加参数axis...三、聚合类方法   有些时候我们需要像SQL里的聚合操作那样原始数据按照某个或某些离散型的进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...可以注意到虽然我们使用reset_index()索引还原回变量,但聚合结果的列名变成红色框中奇怪的样子,而在pandas 0.25.0以及之后的版本中,可以使用pd.NamedAgg()来为聚合后的每一赋予新的名字

4.9K60

(数据科学学习手札72)用pdpipe搭建pandas数据分析流水线

2 pdpipe常用功能介绍 pdpipe的出现极大地对数据分析过程进行规范,其主要拥有以下特性: 简洁的语法逻辑 在流水线工作过程中可输出规整的提示或错误警报信息 轻松串联不同数据操作以组成一条完整流水线...genres_num小于等于5的行   上述操作直接使用pandas并不会花多少时间,但是想要不创造任何中间临时结果一步到位产生所需的数据框子集,并且保持代码的可读性不是一件太容易的事,但是利用pdpipe...,其主要参数如下: columns:字符串或列表,用于指定需要丢弃的列名 errors:字符串,传入'ignore'或'raise',用于指定丢弃指定遇到错误采取的应对策略,'ignore'表示忽略异常...,'raise'表示抛出错误打断流水线运作,默认为'raise'   下面是举例演示(注意单个流水线部件可以直接传入源数据执行apply方法直接得到结果),我们分别对单列和多进行删除操作: 单列删除...图18 ApplyByCols:   这个类用于实现pandas中对apply操作,不同于AggByCols中函数直接处理的是,ApplyByCols中函数直接处理的是对应列中的每个元素。

1.4K10

案例 | 用pdpipe搭建pandas数据分析流水线

2 pdpipe常用功能介绍 pdpipe的出现极大地对数据分析过程进行规范,其主要拥有以下特性: 简洁的语法逻辑 在流水线工作过程中可输出规整的提示或错误警报信息 轻松串联不同数据操作以组成一条完整流水线...genres 5、丢掉genres_num小于等于5的行 上述操作直接使用pandas并不会花多少时间,但是想要不创造任何中间临时结果一步到位产生所需的数据框子集,并且保持代码的可读性不是一件太容易的事...: columns:字符串或列表,用于指定需要丢弃的列名 errors:字符串,传入 'ignore' 或 'raise',用于指定丢弃指定遇到错误采取的应对策略,'ignore'表示忽略异常,'raise...'表示抛出错误打断流水线运作,默认为'raise' 下面是举例演示(注意单个流水线部件可以直接传入源数据执行apply方法直接得到结果),我们分别对单列和多进行删除操作: 单列删除 # 删除budget...(df) 结果如图9: 图9 删除缺失值所在 # 删除含有缺失值的 pdp.DropNa(axis=1).apply(df) 结果如图10: 图10 FreqDrop:   这个类用于删除在指定的一数据中出现频次小于所给阈值对应的全部行

78110

python数据科学系列:pandas入门详细教程

二者之间主要区别是: 从数据结构上看: numpy的核心数据结构是ndarray,支持任意维数的数组,但要求单个数组内所有数据是同质的,即类型必须相同;而pandas的核心数据结构是series和dataframe...前者是已有的一信息设置为标签,而后者是原标签归为数据,并重置为默认数字标签 set_axis,设置标签,一次只能设置一信息,与rename功能相近,但接收参数为一个序列更改全部标签信息(...自然毫无悬念 dataframe:无法访问单个元素,只能返回一、多或多行:单值或多值(多个列名组成的列表)访问进行查询,单值访问不存在列名歧义还可直接用属性符号" ....例如,当标签类型(可通过df.index.dtype查看)为时间类型,若使用无法隐式转换为时间的字符串作为索引切片,则引发报错 ? 切片形式返回行查询,且为范围查询 ?...apply,既适用于series对象也适用于dataframe对象,但对二者处理的粒度是不一样的:apply应用于series是逐元素执行函数操作;apply应用于dataframe是逐行或者逐执行函数操作

13.8K20

初学者使用Pandas的特征工程

使用pandas Dataframe,可以轻松添加/删除,切片,建立索引以及处理空值。 现在,我们已经了解了pandas的基本功能,我们专注于专门用于特征工程的pandas。 !...合并也可以称为离散化技术,因为我们连续变量划分为离散变量。 对于某些机器学习算法,有时使用离散变量而不是连续变量会更好。...我们可以任何函数传递给apply函数的参数,但是我主要使用lambda函数, 这有助于我在单个语句中编写循环和条件。 使用apply和lambda函数,我们可以从中存在的唯一文本中提取重复凭证。...这就是我们如何创建多个的方式。在执行这种类型的特征工程要小心,因为在使用目标变量创建新特征,模型可能会出现偏差。...仅通过单个日期时间变量,我们就可以创建六个新变量,这些变量在模型构建肯定会非常有用,这并不奇怪。 注意:我们可以使用pandas dt函数创建新功能的方式有50多种。

4.8K31

Pandas使用技巧:如何运行内存占用降低90%!

使用 pandas 操作小规模数据(低于 100 MB),性能一般不是问题。...对于表示整型数和浮点数这些数值的块,pandas 会将这些组合起来,存储成 NumPy ndarray。NumPy ndarray 是围绕 C 语言的数组构建的,其中的值存储在内存的连续块中。...我们可以使用 sys.getsizeof() 函数来证明这一点,首先查看单个的字符串,然后查看 pandas series 中的项。...当我们转换成 category dtype pandas使用最节省空间的 int 子类型来表示该中的所有不同值。...总结和下一步 我们已经了解了 pandas 使用不同数据类型的方法,然后我们使用这种知识一个 pandas dataframe 的内存用量减少了近 90%,而且也仅使用了一些简单的技术: 数值向下转换成更高效的类型

3.5K20

Pandas中的数据转换

import pandas as pd import numpy as np 一、⭐️apply函数应用 apply是一个自由度很高的函数 对于Series,它可以迭代每一的值操作: df = pd.read_csv...0,永远表示的是处理方向而不是聚合方向,当axis='index'或=0,对迭代对行聚合,行即为跨,axis=1同理 二、⭐️矢量化字符串 为什么要用str属性 文本数据也就是我们常说的字符串...pattern / regex的出现 repeat() 重复值(s.str.repeat(3)等同于x * 3 t2 >) pad() 空格添加到字符串的左侧,右侧或两侧 center() 相当于str.center...ljust() 相当于str.ljust rjust() 相当于str.rjust zfill() 等同于str.zfill wrap() 长长的字符串拆分为长度小于给定宽度的行 slice() 切分...(c)(b)中的ID结果拆分为原列表相应的5,并使用equals检验是否一致。

6010

Pandas必会的方法汇总,数据分析必备!

() 基于秩或基于样本分位数变量离散化为等大小桶 4 pandas.cut() 基于分位数的离散化函数 5 pandas.date_range() 返回一个时间索引 6 df.apply() 沿相应轴应用函数...:布尔型数组(过滤行)、切片(行切片)、或布尔型DataFrame(根据条件设置值) 2 df.loc[val] 通过标签,选取DataFrame的单个行或一组行 3 df.loc[:,val] 通过标签...9 reindex 通过标签选取行或 10 get_value 通过行和标签选取单一值 11 set_value 通过行和标签选取单一值 举例:使用iloc按位置区域提取数据 df_inner.iloc...再将网页转换为表格很有用 5 read_excel 从ExcelXLS或XLSXfile 读取表格数据 6 read_hdf 读取pandas写的HDF5文件 7 read_html 读取HTML文档中的所有表格...举例:删除后出现的重复值: df['city'].drop_duplicates() 结语 文章中总结的是都是一些Pandas常用的方法,至于一些基础的概念还需要你学到Pandas的时候去理解,例如Series

5.9K20
领券