数据处理
呆萌的代Ma
这个作者很懒,什么都没留下…
展开
-
解决解析PDF编码报错(以pdfminer为例):UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte xxx
博主使用的是pdfminer解析PDF文档,这个解决方法是通用的,只需要使解析时使用PDF的二进制读取方式原创 2023-11-21 16:17:49 · 900 阅读 · 0 评论 -
python拆解字典中包含list的数据,全排列全部组合
【代码】python拆解字典中包含list的数据,全排列全部组合。原创 2023-05-13 18:20:20 · 199 阅读 · 0 评论 -
python取列表中前n个最大、最小值,及对应的下标
使用heapq使用循环依次取数,可以确保如果有多个重复值时,同样可以返回正确的结果。原创 2023-02-22 15:58:34 · 1957 阅读 · 0 评论 -
python将字符串转为字典(将str类型还原为dict字典类型)
有三种方法:1. eval(字符串)2. yaml.load(字符串, Loader=yaml.FullLoader)3. ast.literal_eval(字符串)但是要注意,转换之前,原始的字典中key与value必须是python原生支持的类型,不能是```datetime```,```pandas```这种类型原创 2023-01-19 18:24:06 · 6963 阅读 · 0 评论 -
构造可用next迭代dataframe的行、列的方法
可以通过构造可迭代的函数来实现。循环dataframe的每一行,然后使用yield迭代器返回数据,在外部使用next()来获取函数的结果。原创 2023-01-13 12:28:36 · 414 阅读 · 0 评论 -
解决pandas左上角的数据索引、替换
【代码】解决pandas左上角的数据索引、替换。原创 2023-01-03 15:24:48 · 801 阅读 · 2 评论 -
pandas根据行名称、列名称,得到对应的下标
使用get_loc()的函数可以根据名称,得到下标索引。原创 2022-12-26 09:18:16 · 919 阅读 · 0 评论 -
python使用patterns解析loguru日志,从日志中提取结构化数据
```log pattern```可以认为是对日志的分组,**一种日志格式format,对应一种patterns**,可以快速的对日志进行筛选并提取,是非常高效的日志分析的方法(或思路)原创 2022-11-25 18:52:51 · 1320 阅读 · 2 评论 -
解决pandas用in判断结果错误的问题
# 问题解析对于一个series:```pyimport pandas as pddate_series = pd.Series(pd.date_range("2020-01-01", periods=100))```如下的判断会返回```False```:```pypd.to_datetime("2020-01-01") in date_series```# 解决方法如下判断会返回```True```:pd.to_datetime("2020-01-01")原创 2022-11-19 19:44:46 · 442 阅读 · 0 评论 -
python挖掘时间特征信息,计算日期是当年的第几周、当月的第几周
【代码】python挖掘时间特征信息,计算日期是当年的第几周、当月的第几周。原创 2022-10-19 19:54:26 · 1401 阅读 · 1 评论 -
python numpy计算任意底数的对数 log
对于:x=logabx=\log_{a}{b}x=logab可以得到:ax=ba^{x} =bax=bx∗logea=logebx *log_{e}{a} = log{_e}{b}x∗logea=logeb即:x=logeblogeax = \frac{ log{_e}{b} }{ log_{e}{a} }x=logealogeb得到结果:原创 2022-10-11 10:56:30 · 2083 阅读 · 0 评论 -
将pandas时间戳(Timestamp)数据,转为datetime.datetime格式
Timestamp->字符串->原创 2022-09-22 13:42:07 · 1968 阅读 · 0 评论 -
python日期计算:计算相隔任意时间后的准确日期
主要使用的是dateutil工具包(python自带)的文件下的类。原创 2022-09-22 13:34:13 · 568 阅读 · 0 评论 -
Pandas between 截取时间段
【代码】pandas 截取时间段。原创 2022-09-21 15:15:37 · 700 阅读 · 0 评论 -
Numpy计算分母为n-1的修正方差(贝塞尔校正)
【代码】Numpy计算分母为n-1的修正方差(贝塞尔校正)原创 2022-09-21 14:31:51 · 559 阅读 · 0 评论 -
python递归搜索全部XML标签,获取标签值
【代码】python递归搜索全部XML标签,获取标签值。原创 2022-09-08 13:16:46 · 2418 阅读 · 0 评论 -
Python解析XML示例与解释
使用工具包xml。原创 2022-09-08 10:40:39 · 330 阅读 · 0 评论 -
Python计算狄利克雷分布(Dirichlet Distribution)密度估计
【代码】Python计算狄利克雷分布(Dirichlet Distribution)密度估计。原创 2022-09-07 08:20:13 · 1653 阅读 · 0 评论 -
pandas 解决滑动窗口不会计算存在空值的窗口
可以看到默认值是窗口大小,因此当数据中存在缺失项时会跳过这个窗口,导致结果也是。,用于指定,当前窗口最少有多少个数才开始计算。原创 2022-07-18 15:41:11 · 782 阅读 · 0 评论 -
pandas将datetime64[ns]转为字符串日期
将转为字符串日期(“%Y-%m-%d”)最核心的用法是:如果是或的,则转换最核心的用法是:示例代码将series转为字符串日期:使用将整个dataframe的所有都转为类型的日期数据原创 2022-07-04 13:33:46 · 3449 阅读 · 0 评论 -
python保存numpy数据中间结果到本地文件
当我们保存一些数据的中间结果时,往往比较麻烦,这里写一个工具函数:当我们使用表示一个数据时,会对mark字符串用MD5加密,得到加密后的字符串,然后以此为文件名:原创 2022-07-01 16:42:33 · 1005 阅读 · 0 评论 -
解决dataframe报错ValueError: Cannot take a larger sample than population when ‘replace=False‘
解决方法在抽样时目标样本数大于已有的样本时就会报错,需要根据业务自行判断,比如下面是一种解决方法问题解析使用如下代码会导致报错:原创 2022-06-24 14:17:04 · 6431 阅读 · 0 评论 -
Python对key为字符串的字典排序
```pyif __name__ == '__main__': my_dict = {'1': 34, '10': 35, '2': 67, '4': 89, '0': 199} sort_x = [(k, my_dict[k]) for k in sorted(my_dict.keys(), key=lambda x: int(x))] print(sort_x)```效果:```text[('0', 199), ('1', 34), ('2', 67), ('4', 8原创 2022-06-16 21:02:08 · 397 阅读 · 0 评论 -
Pandas Dataframe按照给定的index列表切分成多个小Dataframe
整个思路比较简单:使用的工具函数如下:示例代码效果:原创 2022-06-16 12:11:13 · 1405 阅读 · 0 评论 -
Pandas转换DatetimeIndex为String格式数据
使用:```py.strftime("%Y-%m-%d").values.tolist()```# 示例代码```pyimport pandas as pdtime_index = pd.date_range(start="20200101", periods=4, freq="D")print(time_index.values.tolist()) # 不转换的效果print(time_index.strftime("%Y-%m-%d").values.tolist()) # 转换原创 2022-06-15 15:21:40 · 1633 阅读 · 0 评论 -
pandas 保存数据到excel,csv
pandas 保存数据比较简单:writer = pd.ExcelWriter('文件保存路径')#columns参数的顺序就是excel的列顺序#df为需要保存的DataFramedf.to_excel(writer, columns=['save1','save2'], index=False,encoding='utf-8',sheet_name='Sheet1')#生成csv......原创 2019-03-05 14:15:28 · 38703 阅读 · 0 评论 -
python四种抽样方法的使用:随机抽样、聚类抽样、系统抽样、分层抽样
四种抽样方法见下示例代码原创 2022-06-10 08:29:39 · 4168 阅读 · 0 评论 -
解决pandas链式赋值警告SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a .....
解决方法赋值都是:问题出在左边的变量选择上,使用或取值,不要直接用下标也不要混用比如下面就会出现警告:我们想填充这个None的时候:修改为下面的代码就OK了:原创 2022-06-07 15:03:24 · 674 阅读 · 0 评论 -
Python计算分位点与逆运算:根据给定的值,计算在序列中的分位水平
计算一个序列的分位点,使用:分位数的逆运算倒过来算,即给定分位点,计算在序列中的分位水平,使用:原创 2022-06-01 14:27:28 · 3298 阅读 · 1 评论 -
Python使用numpy与pandas计算数组元素的变化率
计算变化率的公式比较简单:(新的值 - 原始值)/ 原始值,对应到一维数组就是(当前值 - 上一个值)/ 上一个值示例import numpy as npimport pandas as pdmy_list = np.random.random(size=100)# 使用numpyfund_arr = np.array(my_list)array = np.diff(fund_arr) / fund_arr[:-1]print(array)# 使用pandasseries = pd原创 2022-05-27 15:42:04 · 1984 阅读 · 0 评论 -
python使用numpy保存字典格式的数据
这里写一个保存用的工具函数:def save_dict_by_numpy(filename, dict_vale): if not (os.path.exists(os.path.dirname(filename))): os.mkdir(os.path.dirname(filename)) np.save(filename, dict_vale)保存时用:np.save(保存文件名, dict的变量)加载时用:np.load(保存文件名, allow_pickle=原创 2022-05-23 09:52:37 · 3985 阅读 · 0 评论 -
python dict无需判断key存在即可追加写入
使用dict.setdefault()可设置一个默认值,如果key已存在,就不会有其他操作,借此我们可以不用在追加数据时判断key的存在:my_dict = {} # 建立一个空字典my_dict.setdefault("key", []) # 设置默认键print("a" in my_dict['key']) # 判断值是否存在my_dict.setdefault("key", []).append("a") # 添加进去值print("a" in my_dict['key']) # 判断值是否原创 2022-05-17 10:00:22 · 1796 阅读 · 0 评论 -
python 标准化/归一化与逆标准化/逆归一化
标准化等公式和Python代码请参考:python 数据归一化/标准化方法与代码(离差标准化,log归一化,标准化,比例归一化,反正切归一化)我们使用sklearn来操作:首先准备数据:import numpy as npfrom sklearn.preprocessing import StandardScaler, MinMaxScalerdata = np.random.random(size=(20, 2))标准化/逆标准化标准化的公式:(原始值-均值)/方差,因此逆标准化就是反原创 2022-05-16 11:09:31 · 14835 阅读 · 2 评论 -
Numpy获得最大的K个数据及最小的K个数据
在numpy中使用O(1)的np.argpartition()方法np.argpartition官网文档:https://numpy.org/doc/stable/reference/generated/numpy.argpartition.html对于一个array,使用:np.argpartition(array, kth=8)其中kth代表第几大的数据,它通过将整个数组切分成两个部分,左边是比第k大的数小的部分,右边是比第k大的数据大的部分反过来同理,下面的函数加一个负号就代表这是第8小的原创 2022-05-13 09:24:24 · 2607 阅读 · 0 评论 -
Pandas Dataframe判断类型是否是datetime64[ns]
一列数据判断可以使用:import pandas as pdpd.api.types.is_datetime64_ns_dtype(dataframe['某一列'])一个dataframe可以使用:dataframe.dtypes =="datetime64[ns]"原创 2022-05-06 17:39:42 · 1266 阅读 · 0 评论 -
Numpy填充或截断数组到固定长度
截断很简单,填充使用numpy.pad()numpy.padnp.pad()的参考文档:https://numpy.org/doc/stable/reference/generated/numpy.pad.html使用的时候numpy.pad(array, pad_width, mode='constant', **kwargs)里面pad_width参数不太容易理解,下面是一个例子[(2, 3), (0, 1)] ^^^^^^------ padding for second d原创 2022-05-04 16:56:19 · 2974 阅读 · 0 评论 -
numpy滑动数据
使用np.roll(array,移动位数)可以滑动数组,import numpy as nparray = np.array([2.3, 3.2, 2.8, 3.0, 4])滑动ndarry数组:np.roll(array, 1) # 向后搓一位(此时最后面的到最前面)np.roll(array, -1) # 向前搓一位(此时第一位到最末尾,第二位到第一位)示例:计算增长率growth_rate = (array - np.roll(array, 1)) / np.roll(arra原创 2022-03-04 14:07:20 · 735 阅读 · 0 评论 -
Python Pandas导出Hbase数据到dataframe
Python导出Hbase数据的思路:使用happybase连接Hbase使用table.scan()扫数据,将得到的数据整理为dataframe格式将从Hbase中得到的byte类型的数据转为str类型的数据示例代码import happybaseimport numpy as npimport pandas as pddef create_table(table_name): """创建表""" connection = happybase.Connection(原创 2022-02-20 17:39:45 · 1133 阅读 · 0 评论 -
python numpy中对ndarry按照index(位置下标)增删改查
在numpy中的ndarry是一个数组,因此index就是位置下标,注意下标是从0开始增加:在插入时使用np.insert(),在末尾添加时使用np.append()删除:需要使用np.delete()修改:直接指定下标查找:直接指定下标示例代码import numpy as npif __name__ == '__main__': array = np.array(["a", "b", "c", "d", "e", "f", "g"]) # 插入到指定的index原创 2022-02-09 15:18:32 · 1847 阅读 · 0 评论 -
python pandas使用pipe管道增强代码可读性
pandas dataframe的pipe文档链接:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.pipe.html使用pipe可以像水流一样,有顺序的执行dataframe,而且代码会更清晰示例代码import pandas as pdimport numpy as npdef change_1(value, v_1): value['change_1'] = v_1 # 新建一列"change_1",并原创 2022-01-06 16:07:18 · 530 阅读 · 0 评论