pandas
JasonLiu1919
微信公众号《小窗幽记机器学习》。却顾所来径,苍苍横翠微。个人微信号:onepieceand
展开
-
Python多进程处理数据
背景假设有1千万任务数据,每条数据处理耗时1s,那么如何加速整个任务的处理速度?其中一种解决方案就是使用多进程处理。解决方案pandas + pandarallel安装pandarallel: pip install pandarallel示例# -*- coding: utf-8 -*-# @Time : 2022/5/21 6:14 下午# @Author : JasonLiu# @FileName: test.pyimport timeimport pandas as p原创 2022-05-21 19:33:22 · 1111 阅读 · 0 评论 -
pandas:统计某一列字符串中各个word出现的频率
背景某一列是字符串,想要统计该列字符串分词结果后各词出现的词频。示例代码# -*- coding: utf-8 -*-# @Time : 2022/2/13 4:18 下午# @Author : JasonLiu# @FileName: test.pyimport pdbimport pandas as pdimport numpy as npdf = pd.DataFrame( [[104472, "R.X. Yah & Co"], [104873,原创 2022-02-13 17:12:54 · 2618 阅读 · 0 评论 -
pandas中列方向字符统计及其合并
背景DataFrame 中某一列为str类型,(1)想要统计该列方向各个字符的词频(2)将2个列的统计结果进行合并,即相同key进行相加原创 2022-01-19 19:12:06 · 905 阅读 · 0 评论 -
Pandas中数据去重
背景在数据处理过程中常常会遇到重复的问题,这里简要介绍遇到过的数据重复问题及其如何根据具体的需求进行处理。筛选出指定字段存在重复的数据import pandas as pdstudent_dict = {"name": ["Joe", "Nat", "Harry", "Nat"], "age": [20, 21, 19, 21], "marks": [85.10, 77.80, 91.54, 77.80]}# Create DataFrame from dictstudent_df = pd原创 2021-09-29 11:18:53 · 10229 阅读 · 0 评论 -
pandas中分隔符由多个字符组成
背景在使用pandas过程由于文本中存在形如, 、| 等常规字符,所以需要自定义分隔符,特别是自定义由多个字符组成的分隔符。那么此时在使用 pandas.read_csv()的时候要如何设置?解决比如当生成文件的时候使用#|#作为分隔符,直接使用df = pd.read_csv(raw_file, sep='#|#', quoting=3)会报错: df = pd.read_csv(raw_file, sep='#|#', quoting=3) File "/data/miniconda3原创 2021-09-25 13:53:13 · 2258 阅读 · 0 评论 -
将标签转为onehot形式
背景对于给定具体标签,如何将其转为one-hot形式?比如标签集合体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经',对于multiclass任务,如何将训练数据集中的样本的标签转为one-hot形式?方法1: import numpy as np label_list = ['体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经'] label_dict原创 2021-03-25 17:59:38 · 2050 阅读 · 4 评论 -
pandas分组之后对相同group内的字段进行合并
背景在pandas中对数据进行分组后,想要对相同组的数据进行其他字段的合并。类似场景:有2个字段,分别是文本内容和标签值。先根据文本内容进行分组,再对同一个组内的标签值进行合并,从而得到多标签值。实施测试: import pandas as pd df = pd.DataFrame({'text': ['华中科技大学', '武汉大学', '清华大学', '华中科技大学', '武汉大学'], 'label': ["985,理工", "985"原创 2021-01-15 13:50:12 · 3228 阅读 · 2 评论 -
pandas中2个nan值为何不同
背景判断两个 nan 值是否相等。import numpy as npa=np.nanb=np.nanif a == b: print("Same")else: print("Not Same")if a is b: print("Same")else: print("Not Same")解析numpy.nan是一个numpy.float64的非空对象。所以不能直接用bool表达式去判断numpy.nan,其结果都是True。一切依赖于布尔表达式的判断方式都不行,比如if语原创 2021-01-05 14:25:33 · 1423 阅读 · 1 评论 -
获取list中Top K个值对应的索引
背景在得到概率分布的list之后,想要得到 Top K个概率值及其索引,因为索引对应着label id。方法 import numpy as np p = [0.07, 0.2, 0.1, 0.03, 0.1, 0.5] topk = 2 print("方法1:") index_list = sorted(range(len(p)), key=lambda i: p[i])[-topk:] # sorted(range(len(p)), key=lambda i:原创 2020-12-23 11:40:09 · 2061 阅读 · 0 评论 -
pandas列值根据字典批量替换
背景一个数据中某一列的值需要根据某个字典批量映射为字典中的value。方法1:pandas中的df.replace import pandas as pd import numpy as np df = pd.DataFrame({'col2': {0: 'a', 1: 2, 2: np.nan}, 'col1': {0: 'w', 1: 1, 2: 2}}) print("init df:") print(df) column_dict = {1: "A原创 2020-12-23 09:48:19 · 13420 阅读 · 2 评论 -
按照len长度过滤pandas中值为list类型的数据
背景pandas中对于值为list的数据,如果想要根据list的长度进行过滤,如何操作?方案假设数据集: a b c1 x y [x]2 x z [c,d]3 x t [e,f,g]想要实现result_df = df[len(df['result'])>1] 这种功能。比如想要过滤到 字段 c 中长度>=2的数据,那么可以如下操作: result_df = df[df['c'].map(len) > 1]原创 2020-12-07 11:05:29 · 1640 阅读 · 0 评论 -
Pandas中两个dataframe的交集和差集
创建测试数据:import pandas as pdimport numpy as np #Create a DataFramedf1 = { 'Subject':['semester1','semester2','semester3','semester4','semester1', 'semester2','semester3'], 'Score':[62,47,55,74,31,77,85]} df2 = { 'Subject':['s原创 2020-07-06 19:39:11 · 61595 阅读 · 5 评论 -
pandas 两列数据合并
背景有两个字段,想要将其合并成为一个新的字段。比如当标签分散在不同字段时候,想要将各个标签融合一起。实现def test(): import pdb import pandas as pd df = pd.DataFrame({'year': ['2019', '2020'], 'quarter': ['q1', 'q2']}) df['year_quarter'] = df['year'] + "_" + df['quarter'] # 方法1 df['yea原创 2020-11-18 18:32:12 · 14963 阅读 · 0 评论