
python
文章平均质量分 55
bitcarmanlee
这个作者很懒,什么都没留下…
展开
-
python初始化二维数据
通过debug,发现result[0][0]-result[0][2]的范围,输出都正确,从result[1][0]开始输出结果有问题,于是大概就猜测到了问题在哪,应该是result初始化的时候出现了问题。将a[0][0]的值修改为1以后,a[1][0], a[2][0]的值也变为了1。上面这种初始化方式,对a[0][0]值进行修改的时候,a[1][0], a[2][0]的值未发生改变。很明显,对a[0][0]进行修改以后,a[1][0], a[2][0]的值也发生了改变。原创 2024-03-21 20:25:04 · 969 阅读 · 0 评论 -
conda常用命令总结
conda create -n env_name package_name #创建名为env_name的新环境,并在该环境下安装名为package_name 的包,可以指定新环境的版本号,例如:conda create -n python2 python=python2.7 numpy pandas,创建了python2环境,python版本为2.7,同时还安装了numpy pandas包。conda install --name env_name package_name #在指定环境中安装包。转载 2023-09-20 10:15:20 · 390 阅读 · 0 评论 -
anaconda:Env creation from python 3.7 not working M1 Apple Silicon Mac
发现对于Apple Silicon,python没有低于3.7以下的版本。因此直接换成3.8的版本…在anaconda上执行如下命令,想创建python3.7的环境。具体可以参考github说明。原创 2023-09-19 16:05:29 · 559 阅读 · 0 评论 -
pandas 按行聚合 按列聚合 分组添加汇总行
1.先根据name做groupby操作,需要注意的点在于,将groupby函数中的as_index参数设为False,这样name将不会作为结果中的行索引。对于某个数据,我们经常需要各种聚合操作,比如针对行/列求和,求均值等。3.对所得结果按name排序,这样得到的结果方便查看,汇总行数据在相同key数组分组的最下面一行。上面代码实现的功能是,将数据按name分组,然后对s1,s2进行聚合做求和操作。2.对于df,将s1,s2, merge分别按列求和,并且该行索引值为总和。原创 2023-06-16 17:49:46 · 2690 阅读 · 1 评论 -
pandas pivot pivot_table groupby crosstab用法与区别详解
pivot_table可以重塑数据,重塑数据的好处是使得数据更加的直观和容易分析,俗称数据透视,经常使用excel的同学对透视表就不陌生了。pivot_table与pivot区别在于,pivot仅仅是对数据进行重塑,无法对数据进行聚合。同时,pivot方法中,指定的index与columns构成的数据里面如果存在重复的情况,代码将会报错。前面提到的pivot可以对数组进行分组聚合,其实我们平时日常对数据进行分组聚合使用最多的是groupby。可以看到,输出与pivot_table是完全一样的。原创 2023-05-24 18:21:09 · 1565 阅读 · 0 评论 -
pandas将Series转成DataFrame
具体的值为group,上面的逻辑是将相同department的group值进行聚合。我们想将其转成一个dataframe,可以使用字典的方式,直接创建一个新的dataframe。与一维数组不同的是,除了数组数据以外,他还有一组与数组数据对应的标签索引。上面的代码也将Series转换成了一个dataframe,与前面稍微有所区别的在于,对group还进行了去重排序操作。上面的代码中,data进行groupby操作以后取group列,得到的就是一个Series结构。原创 2023-01-12 17:25:56 · 3979 阅读 · 0 评论 -
pandas transform小结
transform可以调用一个函数,在每个组上生成一个相似的索引数据帧,并返回一个数据帧,该数据帧的索引与原始对象的索引相同,并填充转换后的值。核心是在每个组上生成一个相似的索引数据帧,这个就奠定了transform的强大之处,后面很多使用场合中我们都可以慢慢来体会。可以看出来,transform保留了与原来数据相同的索引。2.最后返回的结果,带上了原始对象的索引,可以很方便的与原始数据进行拼接返回。很明显上面的结果,与原数据行数不一致,索引也无法对齐,得到的结果都是NaN。很明显不是我们想要的结果。原创 2023-01-11 17:46:40 · 524 阅读 · 0 评论 -
pandas常见用法总结:数据筛选,过滤,插入,删除,排序,分组聚合等
pandas里面的用法相对非常灵活,经常会有一种需求可以采用多种方式实现的情况。为了方便查找与记忆,特此对pandas里面常见的一些用法。原创 2023-01-10 17:42:33 · 3070 阅读 · 1 评论 -
pandas loc iloc ix用法详解
pandas处理数据时,我们会经常看到dataframe结构使用loc, iloc, ix等方法。那么这些方法到底有啥区别,下面我们来进行详细分析。首先我们先明确一点,这几个方法都可以用来过滤dataframe的行列。他们的不同,主要还是使用方式的不同。在分析之前,我们先来明确一下标签label的概念。为了方便看得更清楚,先构造一个数据集# label上面的data,0,1,2,3,4,5为索引,就是我们的行标签。name ,age,country,city为列名,则是我们的列标签。原创 2023-01-09 15:06:28 · 722 阅读 · 1 评论 -
python3.x zip用法详解
在python 3.x系列中,zip方法返回的为一个zip object可迭代对象。""""""通过上面的注释,不难看出该迭代器的两个关键点:1.迭代器的next方法返回一个元组,元组的第i个元素为各个输入参数的第i个元素。2.迭代器的next方法,遇到输入序列中最短的那个序列迭代完毕,则会停止运行。为了看清楚zip的效果,我们先看个最简单的例子try:pass上面的代码,输出结果为('a', '1')('b', '2')('c', '3')('d', '4')原创 2022-11-12 20:37:29 · 757 阅读 · 0 评论 -
使用生成器完成杨辉三角,fibonacci数列等
1.生成杨辉三角杨辉三角形式如下 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \1 5 10 10 5 1下面我们使用生成器,来生成一个杨辉三角。def yanghui_triangles(): n原创 2022-03-27 18:19:27 · 991 阅读 · 0 评论 -
pandas dataframe统计填充空值大全
1.判断dataframe是否有空值def t2(): df = pd.DataFrame({ 'name': ['lili', 'lucy','pegga','alin',np.nan], 'age': [18, 16, np.nan, 23, np.nan], 'salary': [np.nan, 300, np.nan, 1000, 800] }) df_contains_nan = df.isnull() print(原创 2022-03-22 11:26:42 · 7589 阅读 · 0 评论 -
python格式化字符串4种方法
1.格式化字符串写法废话不多说,直接上代码def str_format(): context1 = '''there is a person, name: %s, age: %d, salary: %d''' %("lucy", 18, 2000) context2 = '''there is a person, name: %(name)s, age: %(age)d, salary: %(salary)d''' %dict(name="lili",age=19, salary=300原创 2022-01-03 21:53:15 · 7751 阅读 · 2 评论 -
python logging模块使用详解
1.log4j火了2021年底,log4j彻底火了。log4j作为整个java生态里面最重要的组件之一,被爆出了高危漏洞,无数的小伙伴因为log4j的漏洞,马上投入了通宵达旦修bug的工作中。今天我们先不谈log4j的漏洞,谈谈python中的logging模块。2.logging的基本结构logging主要包含有四个基础组件Logger:class Logger(Filterer): """ Instances of the Logger class represent a si原创 2022-01-03 21:19:45 · 1774 阅读 · 1 评论 -
python命名空间,类成员,对象成员
1.命名空间关于python中的命名空间,可以先看官方文档里的一个说明A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。1.namespace(命名空间)是从名称到对象的映射。2.大部分的namespace目前都是通过python中的字典实现的。命令空间为项目中提供了一种避免名字冲突的方法。不同命名空间之前是相互独立的,因此原创 2021-12-22 18:49:20 · 1007 阅读 · 0 评论 -
python 装饰器常见场景与用法
1.计算程序耗时def time_calc(func): def wrapper(*args, **kwargs): start_time = time.time() f = func(*args, **kwargs) cost_time = time.time() - start_time print("cost time is: ", cost_time) return f return wrapper原创 2021-12-22 15:39:43 · 1267 阅读 · 0 评论 -
matplotlib易混概念理解与画图详解
0. 前言最近因为项目进度,需要使用matplotlib画图。等真正动手画图的时候,突然发现虽然使用matplotlib时间也不短了,但是认知好像还不是很清晰很全面。每次需要调一下格式,改变一下坐标轴形式什么的,都需要重新google搜索。离开了google感觉完全画不来图,效率也低,俗称的面向google编程。痛定思痛,等项目需求满足完,图画完以后,决心抽出时间来,好好整理一下matplotlib的相关知识点。1.figure, axes, axis很多同学,包括我自己,最初画图,都是从plt.fi原创 2021-12-21 16:15:29 · 748 阅读 · 1 评论 -
python新式类中的__new__方法与__init__方法
1.旧式类在讲新式类之前,先看看旧式类是怎么用的。class OldClass: passOldClass()上面就是旧式类的写法,默认继承type类。2.新式类python2中,如果定义一个新式类class NewClass(object): pass而在python3中,所有的类,均默认继承object,所以括号里也可以不显示指定object。3.__new__方法与__init__方法如果我们再IDE里面输入__new__字样,IDE会自动给我们补全方法如下:原创 2021-12-20 17:14:17 · 1446 阅读 · 1 评论 -
python time datetime模块最详尽讲解
0.前言python中常用的时间模块包括time与datetime。之前虽然一直在用相关模块,但是没有做过系统总结,理解也不是很到位,没有做到融会贯通的程度。正好趁着项目中正在写相关代码,顺便做个总结,争取所有人看到此文对这两个模块都有很清晰的认知。1.time模块要想了解一个模块的大致情况,首先我们可以点到相关源码中看看注释说明。"""This module provides various functions to manipulate time values.There are two原创 2021-12-19 20:43:35 · 1106 阅读 · 0 评论 -
服务器上安装python anaconda最简明教程
0.需求服务器默认的python环境是2.x,实际开发中需要用到3.x,本着简单偷懒的原则,决定直接装个anaconda。1.前期准备工作既然是服务器,就有各种账号权限,连接公网等问题,这些事让运维同学帮忙搞定,暂且不提。2.下载镜像找到anaconda的清华镜像地址。清华镜像在里面选择合适的版本,然后wget下载到服务器上即可。比如我选择的如下版本get https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-202原创 2021-12-13 19:31:38 · 3617 阅读 · 0 评论 -
python 异常处理小结 try except raise assert
1.try-excepttry except组合是用来处理异常的一对黄金搭档,python中也不例外。可以看个简单的例子:def t1(): try: a, b = 1.0, "2.0" c = a / float(b) print("c is: ", c) except ValueError as err: print("b must be digit!") except ZeroDivisionError as原创 2021-12-08 18:01:47 · 1808 阅读 · 0 评论 -
python smtplib发送邮件可直接运行代码
1.发送普通格式邮件import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport loggingdef send_html(): token = 'xxx' receivers = ['xxx@xxx.com'] mail_msg = """ <p>Python 邮件发送测试...</p> <p><a原创 2021-12-07 18:52:09 · 2823 阅读 · 0 评论 -
numpy中dot, multiply, *区别
1.dot首先看下dot源码中的注释部分def dot(a, b, out=None): """ dot(a, b, out=None) Dot product of two arrays. Specifically, - If both `a` and `b` are 1-D arrays, it is inner product of vectors (without complex conjugation). - If both `a` a原创 2021-10-21 15:37:48 · 727 阅读 · 0 评论 -
tqdm模块
首先给大家看看tqdm源码中的一段注释:Decorate an iterable object, returning an iterator which acts exactly like the original iterable, but prints a dynamically updating progressbar every time a value is requested.如果翻译过来:tqdm是对一个迭代器的装饰器,会返回一个迭代器。这个迭代器的执行速度跟原来的迭代器几乎一样,但是会原创 2021-10-18 19:39:21 · 1432 阅读 · 1 评论 -
实战讲解pandas中merge, join, concat的区别
1.从一个需求说起最近经常有这么一堆数据需要处理一下,而且是很常见的需求:有一个数据集,数据集里全是数字,需要对数据集按区间段进行个数统计,并计算各区间段的占比,所以本质上就是个算占比的事情。有的同志对此不屑一顾,这算哪门子事,搞个excel还不是很简单。当然excel是可以解决上面的问题。问题在于,第一,程序猿是很讨厌使用excel这种带.xxx的文件的,.xxx意味着通用性很差,必须用特定的软件程序才能打开。第二,大部分的开发环境是linux或者macos,这两开发环境不像windows,对于o原创 2021-06-14 17:55:33 · 3799 阅读 · 2 评论 -
pandas join操作详解
1.前言join操作是关系型数据库中最核心没有之一的操作,实际中最容易出问题,经常需要优化的点也是join操作。如果我们将dataframe类比为一张表,自然也会涉及到join操作,而且非常非常常见。下面我们就来仔细看看pandas中的join用法。2.join方法原型pandas源码中join方法的签名如下 def join( self, other, on=None, how="left", lsuffix="", rsuffix="", sort=False )原创 2021-01-28 15:28:42 · 17934 阅读 · 3 评论 -
python md5算法调用与hashlib模块
1.python中的md5将一个字符串md5匿名化是数据处理中的一种常见手段,python3.X中也内置实现了md5算法,下面我们看下md5的用法。import hashlibdef test(): s = "123" m = hashlib.md5() for i in range(5): m.update(s.encode("utf8")) result = m.hexdigest() print(result)上面代码原创 2021-01-27 20:22:39 · 1268 阅读 · 1 评论 -
pandas根据现有列新添加一列
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步pandas中一个Dataframe,经常需要根据其中一列再新建一列,比如一个常见的例子:需要根据分数来确定等级范围,下面我们就来看一下怎么实现。def getlevel(score): if score < 60: return "bad" elif score < 80: retur原创 2021-01-26 20:38:27 · 16265 阅读 · 1 评论 -
pandas某一列去重获取唯一值
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步去重获取唯一值是常见的需求,下面我们看看pandas里面如何实现去重。直接看代码import pandas as pddef test(): df = pd.DataFrame({"c1": [1, 1, 2, 3, 1], "c2": [10, 20, 30, 40, 50]}) print(df) print()原创 2021-01-26 20:08:49 · 22109 阅读 · 0 评论 -
python 修改dataframe列名的几种方法
实际开发中经常有修改dataframe列名的需求,特意总结了如下可用的几种方法。import pandas as pddef t1(): df = pd.DataFrame({'c1':[1, 2, 3], 'c2': [4, 5, 6]}) print(df) df.columns = ['d1', 'd2'] print(df) df.rename(columns={'d1': 'e1', 'd2': 'e2'}, inplace=True)原创 2021-01-25 14:08:20 · 30295 阅读 · 2 评论 -
pandas获取dataframe的行数,列数,元素个数
1.测试数据1457822940 0 0 44 36422692440 0 0 3 31460826600 0 0 7 61410115140 -1 3 25 71161370800 0 0 18 14996746700 0 0 30原创 2021-01-08 18:18:22 · 22277 阅读 · 2 评论 -
pandas groupby 用法详解
1.分组groupby在日常数据分析过程中,经常有分组的需求。具体来说,就是根据一个或者多个字段,将数据划分为不同的组,然后进行进一步分析,比如求分组的数量,分组内的最大值最小值平均值等。在sql中,就是大名鼎鼎的groupby操作。pandas中,也有对应的groupby操作,下面我们就来看看pandas中的groupby怎么使用。2.groupby的数据结构首先我们看如下代码def ddd(): levels = ["L1", "L1", "L1", "L2", "L2", "L3",原创 2020-12-21 22:55:56 · 29836 阅读 · 1 评论 -
pandas map applymap apply方法详解
0 前言pandas的基本数据结构是Series与DataFrame。在数据处理过程中,对每个元素,或者每行/每列进行操作是尝尽的需求。而在pandas中,就内置了map,applymap,apply方法,可以满足上面的需求。接下来结合实际的例子,看看一些基本/常规/高大上的操作。1.map方法map方法在数据处理中属于基本操作,重要性无须多言。map方法一般是对元素进行逐个操作,下面来看看几个例子。首先明确一点:map方法只能作用再Series上,不能作用在DataFrame上。换句话说,Data原创 2020-12-20 22:19:19 · 4243 阅读 · 5 评论 -
pandas cut qcut 分箱算法详解
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步1.分箱数据分箱的需求在实际中非常常见。对于一组连续的值,会对其切分成若干段,每一段我们将其看做一个类别,这个过程就叫做分箱。分箱操作本质上就是将连续值离散化的一个过程。举个常见的例子:最常见的就是对年龄进行分箱操作。假设人的年龄从0-120岁不等,我们将0-5认为是婴幼儿,6-15岁认为是少年,16-30岁认为是青年,31-50认为是中年,原创 2020-12-19 21:32:35 · 3294 阅读 · 1 评论 -
pandas loc, iloc, ix, at, iat用法
1.loc用法loc是基于行的index,可以选择特定的行,同时还可以根据列名称选定指定列。iloc是基于行/列的位置(position)来进行选择def select_test(): a = [i for i in range(10)] b = [2*x + 0.1 for x in a] data = {"x": a, "y": b} tmp = pd.DataFrame(data, index=["r1", "r2", "r3", "r4", "r5", "r6"原创 2020-12-08 18:14:13 · 1071 阅读 · 1 评论 -
python 时间戳转换,求时间差等常见用法
1.常用的模块from datetime import datetimeimport timefrom dateutil.parser import parse2.得到当前时间def getCurrentTime(): now = datetime.now() print(now) print(type(now))结果为2020-05-07 09:39:0...原创 2020-05-07 09:49:43 · 12432 阅读 · 1 评论 -
pandas读取与存储操作详解
1.前言pandas可以将读取到的数据(不一定是csv或者txt)转换成dataframe,然后后面可以方便地对dataframe进行操作,进行各种数据分析工作。下面我们对pandas里常用的一些IO操作进行详细的分析。2.read_csvread_csv最常用的方式是从文件中读取数据,read_csv默认的分隔符号是逗号示例数据:57647:0.059819,26223:0.04800...原创 2020-04-17 12:03:38 · 1732 阅读 · 0 评论 -
anaconda下载过慢修改源配置
1.anaconda默认源太慢anaconda的默认源在下载安装相应包的时候,速度很慢,碰到包稍微大一点,基本就慢得让人无法接受。因此可以更改一下源的配置,提高效率。2.查看conda版本执行下面的命令conda --versionconda 4.8.2可以查看到本地的conda版本,表明此时conda安装成功。如果没有成功显示,重新配置一下环境变量即可。修改.bash_prof...原创 2020-04-14 21:49:51 · 1651 阅读 · 1 评论 -
sympy模块解指数方程
遇到一个形如α∗e−29=0.1\alpha * e^{-29} = 0.1α∗e−29=0.1的方程,求解α\alphaα的值。python中的sympy模块可以很轻松地解决这个问题。具体代码如下from sympy.abc import x, y, z, a, bfrom sympy import expprint sympy.solve(exp(-1 * x * 29) - 0.1...原创 2019-08-26 10:06:50 · 6577 阅读 · 4 评论 -
numpy中的数组复制
1.np.repeat VS np.tilerepeat与tile函数都是复制相关的操作。tile操作,是复制的多维数组本身“”"Construct an array by repeating A the number of times given by reps.“”“repeat操作复制的则是多维数组的每个元素“”"Repeat elements of an array.“”...原创 2019-06-10 10:05:12 · 11593 阅读 · 0 评论