Python及其库使用相关
码破苍穹
中国普通青年
展开
-
python 多进程加速for循环示例,包括如何传参。
对于for循环而言,可以将整个长度进行切分成如上的args_list,再对各个Process传递不同的index值即可。原创 2022-12-09 12:39:34 · 2491 阅读 · 0 评论 -
python,在一个list中,如果连续N次大于一个阈值,那么就计数的函数
【代码】python,在一个list中,如果连续N次大于一个阈值,那么就计数的函数。原创 2022-10-24 10:51:52 · 537 阅读 · 0 评论 -
python,对一个list进行滑动窗口操作,并选取窗口内的数据
【代码】python,对一个list进行滑动窗口操作,并选取窗口内的数据。原创 2022-10-11 20:07:27 · 2381 阅读 · 0 评论 -
python,基于百度地图API获取某个经纬度对应的城市信息
【代码】python,基于百度地图API获取某个经纬度对应的城市信息。原创 2022-10-09 11:44:40 · 1189 阅读 · 0 评论 -
python,构建json字符串的方法
【代码】python,由字典(dict)得到json。原创 2022-09-16 16:20:52 · 1402 阅读 · 0 评论 -
linux 明明已经安装了jupyter、jupyter_core,还是没法运行jupyter(如执行 jupyter notebook list)的原因,
反复的确认了,用pip list看也能看到结果,这是为什么呢?博主本来也是一头雾水。然后在用pycharm连接到linux的时候发现这里pip的库怎么和在linux的终端pip list打印的结果不一样啊,少了很多。而且没有jupyter。再仔细一查发现,诶嘿,这个python是2.7.12的。可能之前在安装某些库的时候,修改了usr/lib/bin/python的配置,多了个python2。这个python2也成了执行jupyter notebook list的载体。 而我们装的库跑到了usr/lib原创 2022-05-27 16:48:37 · 519 阅读 · 1 评论 -
快速根据cuda版本安装pytorch
直接在这里搜就行了,应有尽有。不需要再一个个查什么pytorch和cuda版本的对应关系Previous PyTorch Versions | PyTorch比如cuda10.1,想安装pytorch1.8,有# CUDA 10.1pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html...原创 2022-05-12 12:38:59 · 1799 阅读 · 5 评论 -
python3,load python2创建的pickle,报UnicodeDecodeError错误
形如UnicodeDecodeError: 'ascii' codec can't decode byte 0x9a in position 0: ordinal not in range(128)解决方法:参考Pickle incompatibility of numpy arrays between Python 2 and 3 - Stack Overflowimport pickleimport gzipimport numpywith open('mnist.pkl', .原创 2022-05-07 18:26:37 · 519 阅读 · 0 评论 -
pandas apply,参数化指定列名(将需要的列先放在list中),并进行操作
在这里写了apply同时处理两列的方法CSDN,apply同时处理两列的值但如果需要汇总很多列的数据时,一个一个写太麻烦了。这里应该结合python不定长函数,完成功能。领会下面这个demo的含义就行了。import numpy as npimport pandas as pddf = pd.DataFrame ({ 'a' : np.random.randn(5) * 1, 'b' : np.random.randn(5) *原创 2022-05-07 14:46:36 · 4298 阅读 · 0 评论 -
linux 环境下安装opencv,缺少各种库的问题。
pip install opencv-pythonapt update && apt install -y libsm6 libxext6apt-get install -y libxrender-dev把后面两个加进去应该可以解决问题。注意在执行后面的语句时,可能会报GPG error。使用如下的方法解决即可:gnupg - GPG error: The following signatures couldn't be verified because the public原创 2022-05-05 11:49:39 · 2632 阅读 · 0 评论 -
python重新载入某个库,以及引入在其他地方的库
import pandas as pdimport sys sys.path.append(r'/data/share/utils/') import test_utils #test_utils在utils目录下from test_utils import get_seldom_imeiimport impimp.reload(test_utils)原创 2022-04-24 11:48:53 · 844 阅读 · 0 评论 -
为pyspark DataFrame增加一列
场景是为现有的dataFrame新增一列数据,这些数据与原有数据无关。其功能类似于pandas的join。参考python - PySpark - Adding a Column from a list of values - Stack Overflowfrom pyspark.sql import SparkSessionimport numpy as npimport pandas as pdfrom pyspark.sql import functions as F原创 2022-03-02 19:23:47 · 4169 阅读 · 0 评论 -
使用lightGBM进行验证的demo
一、lightGBM处理回归问题import pandas as pdimport numpy as npfinal_data = new_bostonlabels = boston.targetprint (type(final_data))print (final_data.shape)print (type(labels))print (labels.shape)# final_data、labels的类型如下:# 输出:# <class 'numpy.ndar原创 2022-02-07 10:35:44 · 4111 阅读 · 0 评论 -
pandas apply 返回多列
import pandas as pddata = { 'names' : ['x,a,c','y,er,rt','z,1,ere']}df = pd.DataFrame(data)def myfunc(text): sections=text.split(',') return sectionsdf['part1'] ,df['part2'], df['part3'] = zip(*df['names'].apply(myfunc))print (df)#print的结果:#.原创 2022-01-21 10:38:14 · 1302 阅读 · 0 评论 -
pandas dataFrame之基于numpy向量化加速
当dataFrame太大时,pandas索引(如 df[df['age'] == 30)的速度较慢。可以用向量化方法进行加速。一个例子如下:imei_list = list(set(data_df['imei']))tt = data_df.valuesimei_res = dict()imei_col_data = tt[:,0]lng_col_data = tt[:,1]lat_col_data = tt[:,2]tmstp_col_data = tt[:,3]sel_ime原创 2021-11-01 19:49:35 · 1027 阅读 · 0 评论 -
使用numpy加速pandas计算
众所周知pandas处理大数据很慢,众所周知numpy很快,所以使用numpy替代pandas的一些功能是很有用处的。1、使用apply_along_axis替代applyimport timeimport pandas as pdimport numpy as np df=pd.DataFrame(np.arange(8000000).reshape(2000000,4),columns=list('abcd'))t1=time.time()s1=df.apply(lambda ..原创 2021-10-15 10:58:22 · 491 阅读 · 0 评论 -
使用爬虫爬取天气历史数据(https://lishi.tianqi.com/)
目标:获取https://lishi.tianqi.com/这个页面中所有城市在2021.1~2021.7的历史天气数据一、获取爬虫头:import requestsfrom bs4 import BeautifulSoupfrom fake_useragent import UserAgentimport osimport randomfrom bs4 import BeautifulSoupimport timeimport socketimpor...原创 2021-08-03 17:24:35 · 3385 阅读 · 0 评论 -
python 捕获exception并返回其类型
a = 3b = -5for i in range(b, 10): try: print (i, a/i) except Exception as e: print (i, e) continue用这种方法可以快速的跑完流程,exception的类型也打印出以便之后解决原创 2021-08-02 15:03:02 · 272 阅读 · 0 评论 -
geoHash+folium绘制热力图
这本书相当于一本大数据相关内容的大串讲吧。读完了并不能有短期的提高,但似乎能涨点内力。。虽然和算法有点不相关,但还是读一读吧!这篇文章写一点收获,相当于书本上额外的感悟。第一章,可靠性、可扩展性、可维护性:1、由于CPU比较器,所以处理数据密集型的应用程序的问题更棘手。2、Sql 的拼接:select …from… join … on…=… 相当于先从 …=… 中选定两个表应选取的行,...原创 2021-07-22 11:00:41 · 825 阅读 · 0 评论 -
python haversine公式
# 经度,纬度def haversine(lng_1, lat_1, lng_2, lat_2): """ Calculate the great circle distance between two points on the earth (specified in decimal degrees) :return: the distance between two points on the earth """ # 十进制转化为弧度制 ln.原创 2021-05-11 08:41:25 · 1586 阅读 · 0 评论 -
python folium应用——将经纬度在地图上标注
import foliumimport pandas as pddef marker(trajectory_df): trajectory = folium.map.FeatureGroup() for index,row in trajectory_df.iterrows(): trajectory.add_child( folium.CircleMarker( [row['lat'],row['lon']], .原创 2021-04-30 11:06:39 · 2872 阅读 · 0 评论 -
经纬度在wgs84、bd09、gcj07三个坐标系下的互相转化
# -*- coding: utf-8 -*-# /**# * 各地图API坐标系统比较与转换;# * WGS84坐标系:即地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,# * 谷歌地图采用的是WGS84地理坐标系(中国范围除外);# * GCJ02坐标系:即火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系; # *...原创 2021-04-23 16:36:17 · 538 阅读 · 0 评论 -
hive sql之实现“join的反操作”——选取A表中在表中没有的字段对应的数据
https://stackoverflow.com/questions/367863/find-records-from-one-table-which-dont-exist-in-anotherPhone_book+----+------+--------------+| id | name | phone_number |+----+------+--------------+| 1 | John | 111111111111 |+----+------+--------------+原创 2021-04-23 09:59:31 · 991 阅读 · 0 评论 -
使用matplotlib在画出的波形上标注某些点(markevery的应用)
主要是markevery的应用。虽然很简单,但查了半天很多博客写了一大堆还是不知所云。这里找到一个不错的代码,分享下import numpy as npimport matplotlib.pyplot as plt# Create a figure of size 8x6 inches, 80 dots per inchplt.figure(figsize=(8,6),dpi=80)# Create a new subplot from a grid of 1x1plt.subplo原创 2021-04-19 16:10:31 · 4084 阅读 · 0 评论 -
使用Python,给定周期,采样率,幅值等生成正弦波
#C:周期#F:频率,单位为Hz#base_ratio:幅度#SAMPLE_RATE:采样率:单位为Hzdef generate_sine_wave(C, F, base_ratio, SAMPLE_RATE): import math PI = 3.1415926535793 P = 0 #相位为0 dot_count = int(C * SAMPLE_RATE / F) #所需的采样点数 time_ms = C/F #总采样时间 x.原创 2021-04-14 10:18:26 · 1084 阅读 · 0 评论 -
python设计各种滤波器(基于切比雪夫)
#切比雪夫滤波器def apply_chebyshev_filter(data, fs, ftype, freqs=[], order=5, rp=3): nyq = 0.5 * fs if ftype == 'low_pass': assert len(freqs) == 1 cut = freqs[0]/nyq b,a = signal.cheby1(order, rp, cut, btype='lowpass') e.原创 2021-04-13 17:54:46 · 2119 阅读 · 0 评论 -
使用python完成对波形的采样率的扩增
可以通过先内插再采样的方法实现功能。如有20Khz采样率的采样信号,希望得到该波形在24Khz采样率下的信号,可以先将采样信号内插12倍,再进行10倍下采样。内插函数可以选用scipy的样条插值函数import scipy.interpolate as spidef wave_process(original_data): data_num = len(original_data) interp_rate = 12 inter_data_num = data_nu原创 2021-03-27 14:47:24 · 579 阅读 · 1 评论 -
pandas在apply中加入参数
#!/usr/bin/pythonimport pandas as pddata = {'year':[2000,2001,2002,2001,2002],'value':[1.5,1.7,3.6,2.4,2.9]}frame = pd.DataFrame(data)print (frame)print ("---------------")def testfunc(x, data): #第一个参数代表该函数处理的每一个元素,第二个参数args是传入的参数 return str.原创 2021-02-05 17:17:09 · 6240 阅读 · 0 评论 -
linux环境下,geopandas 安装报错,显示Proj executable not found. Please set PROJ_DIR variable
pip install geopandas 之前好好的,突然就安不上了,看了一下,原来是pyproj没装好折腾了一圈,发现先pip install pyproj==2.2.0即可。可能是这玩意升级的版本太高了,以致于不兼容。原创 2020-12-03 10:37:26 · 24733 阅读 · 0 评论 -
Dbscan自定义距离公式
dbscan可以直截了当的计算点之间的距离,然而对于经纬度距离,其数值无法直接转换。因此可以使用如下方法:from math import radians, cos, sin, asin, sqrt def haversine(data1, data2): # 经度1,纬度1,经度2,纬度2 (十进制度数) """ Calculate the great circle distance between two points on the earth (specifi.原创 2020-09-29 15:06:46 · 2940 阅读 · 0 评论 -
python,获取字典中出现次数最多的项
from collections import Counterdef get_mst_freq_item(list_data): x1 = dict(Counter(list_data)) dic1SortList = sorted(x1.items(),key = lambda x:x[1],reverse = True) print (dic1SortList) return dic1SortList[0][0]原创 2020-08-27 10:12:53 · 2864 阅读 · 0 评论 -
python pickle存储和加载数据
是转载的,出处忘了。import pickledef save_variable(v,filename): f=open(filename,'wb') pickle.dump(v,f) f.close()def load_variavle(filename): f=open(filename,'rb') r=pickle.load(f) f.close() return r原创 2020-08-12 10:27:49 · 401 阅读 · 0 评论 -
dataframe 使用loc修改任意的一个值
d2 = pd.DataFrame({ 'a': [1, 1, 2, 2], 'b': ["nimena", "naive", "asswe", "can"],})print (d2)d2形如:目标是把左上角的1变成 6,how?d2.loc[((d2.a == 1) & (d2.b== 'nimena')), 'a'] = 6即可实现目标原创 2020-08-06 16:35:07 · 2094 阅读 · 0 评论 -
在jupyter环境下实现 cmd命令执行 python文件的方法
需要完成的操作类似于如下这样:思路:主要还是直接执行main.py。需要对args进行改造。1、调用的各种文件全都放在main.py。2、将引用的文件都放在main.py(也许可以不用引用,但为了避免麻烦就放在一起了)3、改parse_args() 函数。def parse_args(): parser = argparse.ArgumentParser() #............ parser.add_argument... #......原创 2020-08-06 16:11:55 · 2176 阅读 · 1 评论 -
python 常用的时间戳转换小函数
#输入为string类型的时间,形如 2020-05-31 00:00:00#输出为毫秒级别的时间戳def time2tmstp(time_info): timeArray = time.strptime(time_info, "%Y-%m-%d %H:%M:%S") timeStamp = int(time.mktime(timeArray)) timeStamp = int(str(timeStamp) + "000") timeStamp = timeStamp .原创 2020-07-24 17:51:33 · 269 阅读 · 0 评论 -
python库之networkx之创建有向图的方法
多的不说,看代码就懂了:import networkx as nximport matplotlib.pyplot as plttextline = '1 2 3'fh = open('test.edgelist','w')d = fh.write(textline)fh.close()G = nx.read_edgelist('test.edgelist', create_using=nx.DiGraph(),nodetype=int, data=(('weight',float),)原创 2020-07-20 20:07:56 · 8803 阅读 · 1 评论 -
KNN自定义距离函数
比如在KNN中引入DTW:def cal_dtw_distance(ts_a, ts_b): """Returns the DTW similarity distance between two 2-D timeseries numpy arrays. Arguments --------- ts_a, ts_b : array of shape [n_samples, n_timepoints] Two arrays containing n原创 2020-06-28 16:04:55 · 4889 阅读 · 2 评论 -
python 多进程执行时进程提前终止?
写了一段代码,发现进程没跑完就提前终止了?原因可能是进程运行一半出错了!注意多线程情况下不报错!from multiprocessing import Processimport osfrom multiprocessing import Pooldef run_proc(i): a=i / 1 print(a)if __name__=='__main__...原创 2020-04-15 21:36:43 · 2726 阅读 · 0 评论 -
好用的根据list的数据画直方图的方法
import matplotlib.pyplot as pltimport numpy as nprange = [0,12] #x轴范围bins=np.arange(range[0],range[1],1)#设置连续的边界值,即直方图的分布区间[0,10],[10,20]...#直方图会进行统计各个区间的数值plt.hist(tt2,bins,color='blue',alpha...原创 2020-04-08 15:32:21 · 3406 阅读 · 0 评论 -
不用函数实现对dataframe某几列的交换,在某一位置插入列等等
看下面的语句就清楚了:data.columns = ["aa","game_name","timestamp"]data["duration"] = 1data2 = data[["timestamp","duration","game_name"]]使用[[columns]]对原始dataframe进行重组即可...原创 2020-03-24 10:11:49 · 324 阅读 · 0 评论