![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Pandas
程序媛三妹
VX: cxysanmei1024 同名公众号和知乎:程序媛三妹,请多指教呀
一个希望不断进化的姑娘~
展开
-
pandas分批读取CSV并分批处理数据
算法工程师要面对的一大主要矛盾:不够用的服务器内存和巨大的训练集数据量之间的矛盾。如果使用pandas处理CSV数据,会先把整个CSV加载到内存之后再处理,所以如果你的CSV文件巨大(其实也不一定非常大,我的数据集只有4、50个G,可惜当时服务器内存只有60多个G了),就要想其他方法了。我之前都是把CSV文件手动切分成10个小文件,再逐个处理。现在觉着这方法太傻了啊。其实pandas 读取CSV文件的函数 read_csv() 中自带两个参数就可以解决:nrows=skiprows=原创 2022-05-22 10:44:16 · 2467 阅读 · 1 评论 -
最简单 pandas 多进程 方法 pandarallel
虽然 Python 有自己专门实现多进程多线程的包,可是用于 pandas 中却不是很好用,其实 pandas 有自己实现多进程的包,超级好用。一、初次见面pandarallel 包GitHub - nalepae/pandarallel at v1.5.2A simple and efficient tool to parallelize Pandas operations on all availableCPUs - GitHub - nalepae/pandarallel at v1.5.原创 2021-10-01 10:04:56 · 3837 阅读 · 0 评论 -
pandas list\dict 转换为DataFrame
目录一、list 转为 DataFrame二、dict 转为 DataFrame一、list 转为 DataFrame1、一维数组import pandas as pda = [1,2,3,4]df = pd.DataFrame(a, columns=['num'])print(df)结果展示:2、二维数组 list of listimport pandas as pda = [[1,2,3,4],[5,6,7,8]]df = pd.DataFrame原创 2021-02-04 22:52:31 · 3604 阅读 · 0 评论 -
pandas 求 DataFrame 的行数和列数
假设有 dataFrame 叫 df。1、求行数法一:len(df)法二:df.shape[0]2、求列数df.shape[1]以上,问题解决~原创 2020-05-18 10:46:37 · 3503 阅读 · 0 评论 -
如何找出 sklearn SelectBest 选出几个重要的特征名称(column name)
一、需求sklearn SelectBest 函数可以指定参数 k 的值,就能选出最重要的 k 个特征。也能通过model.scores_ 和model.pvalues_ 来输出得分和 p-value 的值,如果特征量小,可以通过肉眼对比 model.scores_ 来得知选出来的是哪几列,但是如果特征个数特别多,如何能通过排序方法知道排序结果,并输出选中的列名呢?二、解决方法from sklearn.feature_selection import SelectKBestfrom sk..原创 2020-05-17 22:51:00 · 4871 阅读 · 4 评论 -
Pandas groupby分组后求各组行数
一、需求CSV 文件中,按 ‘date’列分组,求分组后各个分组的行数。二、代码import pandas as pddata = pd.read_csv('test.csv')df = pd.DataFramd(data)df = df.groupby('date').size() # 统计各个分组行数_list = df.to_list()print('_li...原创 2020-04-29 22:08:42 · 8357 阅读 · 0 评论 -
Pandas报错AttributeError: Cannot access callable attribute 'sort_values' of 'DataFrameGroupBy' objects
完整报错如下:AttributeError: Cannot access callable attribute 'sort_values' of 'DataFrameGroupBy' objects, try using the 'apply' method报错代码如下:import pandas as pddata = pf.read_csv('test.csv',header...原创 2020-04-05 16:33:51 · 3493 阅读 · 0 评论 -
pandas 按某一列A排序,按B和C两列分组,选择分组后A列值最大的行
一、需求按 updateTime 列倒序排序,按B\C列分组,分组后选择最后更新的时间的那一行,并将结果加上新索引。二、代码import pandas as pddata = pd.read_csv('test.csv')df = pd.DataFrame(data)df = df.sort_values('updateTime', ascending=False).group...原创 2020-04-05 16:27:05 · 1995 阅读 · 0 评论 -
Pandas 按照两列分组后只选排序第一名
1、问题背景每日有多条信息,即 updateTime 栏每天有多条,现需要按照国家、日期分组,只保留最后更新的一条数据。2、代码import pandas as pddata = pd.read_csv('test.csv',header = 0)df = pd.DataFrame(data)df = df.sort_values('updateTime', ascen...原创 2020-03-28 10:34:52 · 2528 阅读 · 0 评论 -
Pandas 某一栏截取部分信息
现有一栏 updateTime 是年月日时分秒进行展示,希望提取其中的年月日部分,代码如下:import pandas as pddata = pd.read_csv('test.csv',header = 0)df = pd.DataFrame(data)df['date'] = df['updateTime'].astype(str).str[0:10]print(df['da...原创 2020-03-28 10:04:50 · 868 阅读 · 2 评论 -
换个思路解决 Pandas 按照某一列的不同值分块功能
一、需求在处理 CSV 文件时,有一列是 bool 列,也就是只有 True 或 False 值,但是是交叉的,本人想让其分成两块,一部分全是 True 值的行,另一部分全是 False 的行。搜索方法使用 groupby() , cut() 函数等未能实现,想到了一个比较 trick 方法,记录如下。二、解决方法思路转变为按照该 bool 列中的值排序,这样相同的 False 或...原创 2019-11-27 19:31:28 · 1506 阅读 · 0 评论 -
Pandas 根据 index 索引选择某些行
一、需求选择 index 列为某些值的行。二、解决方法使用 pands 的 iximport pandas as pddef data_process(): data = pd.read_csv('example.csv') df = pd.DataFrame(data) df1 = df.ix[[1,3,5,7,9]] df1.to_csv...原创 2019-11-27 17:20:33 · 7413 阅读 · 0 评论 -
Pandas 已有 DataFrame,给其加列名
一、需求给没有列名的 DataFrame 加上列名二、解决方法import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(3,2))print(df)names=['a','b']df.columns=namesprint(df)第一个 print(df),结果如下: ...原创 2019-11-19 16:40:14 · 15328 阅读 · 5 评论 -
Pandas 保留某一列为某个值的行,其余删除
一、需求多个列中按照某一列 A 取值,保留 A 列中值为 B 的行,其余删除。二、解法使用 isin() 函数~import pandas as pddata = pd.read_csv('example.cvs')df = pd.DataFrame(data)# 只保留 A 列中值为 test 的行df = df[df.A.isin(['test'])]以上,问...原创 2019-11-11 18:05:06 · 8529 阅读 · 0 评论 -
Pandas pd.merge() 报错:ValueError: You are trying to merge on int64 and object columns.
1、需求:df1 和 df2 按照 A, B 两列进行合并,假设 df1 为 A B C 三列,df2 为 A B D 三列,将其中A B 相同的列 merge 为 A B C D 四列。outfile = pd.merge(df1, df2, how='left', on=['A','B'])2、用 pandas 合并两个 CSV 文件时,报错信息如下:ValueError...原创 2019-10-21 13:15:20 · 11511 阅读 · 0 评论 -
Pandas 合并多个 (300多个) Excel 文件,并输出为 CSV 文件
爬虫同事帮忙爬了个网站信息,网站上有300多页,每页生成一个 Excel 文件,为方便处理,我需要合并成一个 all.csv 文件。不废话,上代码:import pandas as pdimport osdef process_data(): folder_path = r'/Users/example' # 要拼接的文件夹及其完整路径,注意不要...原创 2019-10-20 15:20:58 · 2113 阅读 · 5 评论 -
报错:pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 7, saw 2
Pandas 合并 CSV 文件时报错如下:pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 7, saw 21、报错原因中间字符串有错误,因为 read.csv 默认分隔符是“,”,比如前面都是一行没有“,”,后面突然出现一行有“,”,这时这行数据就会变成两列,前面...原创 2019-10-20 15:01:07 · 36985 阅读 · 15 评论 -
Pandas 使用 Lambda 例子及注意事项
# 注意 函数 formula() 一定要有返回值,否则下面 apply 函数不起作用def formula(x): if x in slidetime_dict: return slidetime_dict[x] else: return 15 df['slidetime'] = df.apply(lambda row: formula(r...原创 2019-10-14 20:55:24 · 3362 阅读 · 0 评论 -
Pandas 报错 TypeError: ‘Series‘ objects are mutable, thus they cannot be hashed
一、需求根据原始 CSV 文件的列 A 的值,添加一列 B。二、尝试 11. 将 A 列与 B 列对应的值写入字典 dict,A 列为 key,B 列为 value。2. 将 CSV 文件处理为 DataFrame。3.import pandas as pd# 如果 df['A']存在于 dict_a 中,则取 value,值,否则使用默认值 15dict_a =...原创 2019-10-12 09:47:23 · 34044 阅读 · 1 评论 -
Panda处理CSV文件,如果A列值为空,则用B列值填充,如果B列值仍为空,用C列值填充A
需求:CSV文件中 A 列的值不全,如果为空值,则使用B 列的值,如果B列的值仍为空,则使用 C 列的值。做法:为简化需求,将所有值统一到 A 列,即填充 A 列空值,如果该行 B 列有值,则用 B 列值填充,否则用 C 列值填充。代码实现:import pandas as pddef check_nan(x): if pd.isnull(x['A']): ...原创 2019-09-17 20:07:12 · 1745 阅读 · 0 评论 -
Pandas 数据结构 Series
Pandas主要有两个数据结构:Series 和 DataFrame。本节主要介绍Series。Series类似一维数组,由索引和一组数据组成,其中索引在左边,值在右边。1、定义方式定义方式 1):import pandas as pddata = pd.Series([1,2,3,4])在未指定索引时,会自动创建一个 0 - base 的索引,类似于数据结构中的一维数组...原创 2019-09-18 19:35:15 · 1265 阅读 · 0 评论 -
TypeError: ufunc subtract cannot use operands with types dtype('O') and dtype('M8[ns]')
Pandas 处理两列时间,想求时间差,在做差时报错如下:TypeError: ufunc subtract cannot use operands with types dtype('O') and dtype('<M8[ns]')bug 解释:1.'b' boolean'i' (signed) integer'u' unsign...原创 2019-09-20 17:14:36 · 11093 阅读 · 0 评论 -
Pandas 描述和汇总统计函数
方法 说明 count 非 NA 值的数量 describe 针对 Series 或各 DataFrame 列计算汇总统计 min, max 计算最小值和最大值 argmin, argmax 计算能够获取到最小值和最大值的索引位置(整数) idxmin, idxmax 计算能够获取到最小值和最大值的索引值 quantile...原创 2019-09-22 22:41:47 · 784 阅读 · 0 评论 -
Pandas 相关系数与协方差
有些汇总统计(如相关系数和协方差)是通过参数对计算出来的。1. Series的 corr 方法用于计算两个 Series 中重叠的、非 NA 的,按索引对齐的值的相关系数。 cov 用于计算协方差。2. DataFrame 的 corr 和 cov 方法将以 DataFrame 的形式返回完整的相关系数或协方差矩阵。3. 利用 DataFrame 的 corrwith 方法,可以计算其...原创 2019-09-23 11:02:21 · 1551 阅读 · 0 评论 -
Pandas唯一值、值计数以及成员资格
方法 说明 isin 计算一个表示 “Series各值是否包含于传入的值序列中”的布尔型数组 unique 计算 Series 中的唯一值数组,按发现的顺序返回 value_counts 返回一个 Series,其索引为唯一值,其值为频率,按计数值降序排列 isin() 函数应用:import pandas as pd# 处理数据,选择 B 列中有...原创 2019-09-23 11:13:11 · 392 阅读 · 0 评论 -
Pandas 缺失数据
目录:一. 处理缺失数据二. 滤除缺失数据三. 填充缺失数据一. 处理缺失数据方法 说明 dropna 根据各标签的值中是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值的容忍度 fillna 用指定值或插值方法(如 ffill 或 bfill)填充缺失数据 isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值时缺省值 \...原创 2019-09-23 13:41:35 · 116 阅读 · 0 评论 -
Pandas: count() 与 value_counts() 对比
1. Series.value_counts(self,normalize=False,sort=True,ascending=False,bins=None,dropna=True)返回一个包含所有值及其数量的 Series。且为降序输出,即数量最多的第一行输出。参数含义如下:Parameters: normalize:boolean, default ...原创 2019-10-08 10:40:27 · 14202 阅读 · 0 评论 -
Pandas 比较日期差异
一、需求两列数据A, B 分别表示两个时间,已用函数 pd.to_datetime() 做标准化时间处理,A - B 求两列的差值后,发现结果是 0 days 或 -1 days,如图所示:要求:挑选出 > 0 days的部分,其余不处理。二、解决办法主要思想是通过加一列 bool 列来判断 delay 列是否是 > 0 days,如果是,标记为True,否则...原创 2019-10-08 16:00:55 · 8670 阅读 · 0 评论 -
Pandas: startswith()函数实现拆分文件
一、需求将一个CSV文件中按照 NUMBER 列分成两个 CSV 文件,一个文件中 NUMBER 列以 AB 开头,剩下的为另一个 CSV 文件。二、实现代码import pandas as pddata = pd.read_csv('example.csv',header = 0)df = pd.DataFrame(data)# print(df)df['bool']...原创 2019-10-09 09:35:15 · 3474 阅读 · 0 评论 -
Pandas 判断两列内容是否相同并将结果新建一列
1、首先写一个函数,实现判断是否相等的功能,如下:def function(a, b): if a == b: return 1 else: return 02、用 pandas 里面强大的 lambda 处理文件(如CSV文件):import pandas as pd;data = pd.read_csv('test.csv')...原创 2019-09-12 20:02:06 · 31823 阅读 · 8 评论