
python
-永不妥协-
爱生活,爱老婆。
展开
-
Python的赋值、浅拷贝和深拷贝
直接赋值 浅拷贝 深拷贝 定义 默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变 浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变 深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变 赋值 alist=[1,2,3,["a","b"]] b=alist alist=[1,2,3,["a","b"]] import copy c=copy.copy(alist)原创 2020-09-08 09:55:39 · 531 阅读 · 0 评论 -
pandas的shift和diff介绍,不同行(列)移动,做差
最近在做一个比赛,有一张表格记录的是每个用户不同时间的行为,每一次行为有一行记录。现想要求不同用户每次行为的时间差,下面为大家介绍如何实现这一需求。具体如下图所示:⑴ 先移动到同一行,在做差pandas中shift()函数的功能是按设置的间隔,将所有列(行)移动整体向上(向下)平移,这样我们就将相近的两次行为的时间移动到了同一行,直接做差就可以得到两次行为的时间差具体如下: ...原创 2018-01-19 17:50:58 · 15468 阅读 · 2 评论 -
python绘制roc曲线,lift曲线
roc曲线和lift曲线是模型评价的指标,我们在建好模型后经常会用这两个指标对模型进行评估。在建模过程中发现python竟然没有自动生成roc曲线和lift曲线的包。我自己写了两个函数,能够做出roc曲线和lift曲线。希望可以给大家工作和学习带来一些方便。函数如下,大家可以直接调用。from scipy.stats import scoreatpercentileimport sea...原创 2018-02-09 11:22:29 · 15390 阅读 · 9 评论 -
数据处理中的拼接与连接
在进行数据分析/数据建模之前,我们常常会对原始数据进行一系列的处理。其中拼接和连接是我们常常使用的处理方法之一。下面为大家介绍一下拼接和连接这两种数据处理方式的异同之处。 拼接和连接都是将若干个存放在不同单元(表)种的数据整合到一个单元(表)中的操作。区别在于,拼接是将不同单元的数据按垂直方向整合;而连接是按水平方向进行整合。 numpy和pandas都有实现拼接和连接...原创 2018-03-06 15:24:29 · 4755 阅读 · 0 评论 -
python:时间戳转标准时间
我们在进行数据处理的时候,经常会用到时间数据。但现实中的时间数据有各种各样类型的:时间戳、字符串、yyyy/mm/dd等。下面为大家介绍如何将时间戳转为为标准的时间格式:import timedef get_date(timestamp) : time_local = time.localtime(timestamp) dt = time.strftime("%Y-%m-...原创 2018-03-28 18:22:22 · 5036 阅读 · 0 评论 -
Python多重赋值
记得在刚刚开始学习计算机的时候,遇到过这样的问题:将变量a和变量b的值互换。当时的解决办法是引入一个中间变量c, ①将a的值传递给c:c = a②将b的值传递给a:a = b③将c的值传递给b:b = c现在通过Python的多重赋值,我们可以通过一行命令实现:a, b = b, a...原创 2018-06-13 09:36:46 · 1969 阅读 · 0 评论 -
Python中list的与numpy的array的拷贝与切片
在Python中,变量仅是个名称,就是贴在对象上的标签。我们都知道list和array都是可变对象。下表整理了对list和array的拷贝、切片、单个值对象修改后,对原始对象的影响。参考资料:python中list的拷贝与numpy的array的拷贝1)arrayimport numpy as np#单个值(不变)a = np.array([0,1,2,3,4,5])b...原创 2018-06-26 13:57:11 · 1130 阅读 · 0 评论 -
python利用open进行文件读写
python open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写读f = open('/file', 'r')f.read():一次性读取文件全部内容 f.read(size):每次最多读取size大小的内容 f.readline():每次读取一行内容 f.readlines():一次读取所有内容并按行返回list写f = open('...原创 2018-08-21 09:51:51 · 1212 阅读 · 0 评论 -
利用Python将数据库提取的数据转为DataFrame格式
在利用python进行数据分析时,有时候我们会直接连接数据库,将需要分析的数据导入到python中。如果直接导入到python中,数据格式为tuple,不便于后续的分析。下面为大家介绍两种方法,能够将利用sql提取的数据转换为dataframe。解析法def get_df_from_db(sql): cursor = connection.cursor() cur...原创 2018-09-04 17:43:17 · 25463 阅读 · 2 评论 -
Python的if...elif语句
我们在编写程序的时候,经常会进行多条件判断。Python的if...elif可以进行多条件判断。在使用if...elif需注意:if判断会返回第一个满足条件的结果。如果需要返回所有满足条件的结果,这种方法是不可行的。下面为大家举一个例子:a = 5if a < 6: print('aaa')elif a < 7: print('bbb')打印结...原创 2018-11-06 17:41:00 · 1221 阅读 · 0 评论 -
python的axis判断
axis = 0,对横轴(第0维)进行操作,运算的方向为纵向运算。即求列和、最大、最小等axis = 1,对纵轴(第1维)进程操作,运算的方向为横向运算。即求行和、最大、最小等import numpy as npimport numpy as npdata = np.array([[1,1,1,1], [2,2,2,2], ...原创 2018-12-26 22:28:26 · 881 阅读 · 0 评论 -
python 循环创建变量
数据分析时,我们经常会有这样的需求:将数据集按某一个维度拆分成若干数据子集、创建多个变量。如果手动去实现,工作量较大。我们可以通过locals()配合循环语句来实现这一需求。我们以鸢尾花数据集为例,我们按照花的种类将数据集拆分成数据子集,分别放到不同的变量中去。实现代码如下:from sklearn.datasets import load_irisiris = load_iris()...原创 2019-01-02 21:54:45 · 11084 阅读 · 0 评论 -
变量相关性热力图
我们在建模的时候为了避免多重共线性一般都会分析变量之间的相关性。衡量变量相关性我们一般都是计算变量两两之间的皮尔逊相关系数( Pearson correlation coefficient)。为了能够更好的展现变量之间的相关性,下面为大家介绍如何利用热力图来表示变量之间的相关性。def corr_map(df): var_corr = df.corr() mask = np....原创 2019-04-13 10:41:36 · 15683 阅读 · 1 评论 -
python求两个时间的时间差
我们在用python进行分析的时候,可能会碰到计算两个日期的时间差。下面为大家介绍一下如何计算两个时间的时间差: from dateutil.parser import parsea = parse('2017-10-01/12:12:12')b = parse('2013-3-4/10:10:10')(a-b).days(a-b).seconds(a-b).total_sec...原创 2018-01-26 15:38:04 · 96560 阅读 · 4 评论 -
python导入中文命名的文件
我们在用python处理文件的时候,经常会碰到一些以中文命名的文件。若直接去处理这些文件,往往都会报错,下面给大家介绍一种能够直接导入以中文命名的文件的方法:一般我们都会通过这种方法来读取文件,但是碰到中文命名的文件就会报错了 data = pd.read_table(u'轨迹数据.txt',sep=',',index_col=False) 但我们可以通过如下的命令来直接读取...原创 2017-12-22 17:36:21 · 4894 阅读 · 0 评论 -
Python在groupby分组后提取指定位置记录
在进行数据分析、数据建模时,我们首先要做的就是对数据进行处理,提取我们需要的信息。下面为大家介绍一些groupby的用法,以便能够更加方便地进行数据处理。我们往往在使用groupby进行信息提取时,往往是求分组后样本的一些统计量(max、min,var等)。如果现在我们希望取一下分组后样本的第二条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第一条和最后一...原创 2018-01-12 15:26:01 · 21589 阅读 · 2 评论 -
python的时间转换datetime和pd.to_datetime
我们在python对数据进行操作时,经常会选取某一时间段的数据进行分析。这里为大家介绍两个我经常用到的用来选取某一时间段数据的函数:datetime( )和pd.to_datetime( )。(一)datetime( ) (1)获取指定的时间和日期。datetime(%Y,%m,%d,%H,%M,%S) datetime共有6个参数,分别代表的是年月日时分秒。其中年...原创 2017-09-24 11:38:44 · 152578 阅读 · 8 评论 -
在anaconda(python)下安装opencv
最近参加一个比赛,有人推荐用opencv这个模块做处理,就想在anaconda上安装下这个模块。发现直接用pip会出现各种不匹配的问题。网上说是因为在python的pip库中没有匹配的版本,所以在使用pip安装会报错。 因此我们可以直接下载opencv这个包,然后再本地进行安装。具体做法如下: 1.)打开http://www.lfd.uci.edu/~gohlke/py...原创 2017-09-27 19:00:10 · 3018 阅读 · 0 评论 -
python的lambda()和map()的个人理解
最近参加一个数据建模比赛,在进行数据处理的时候接触到了lambda( )和map( )这两个函数。认为在进行数据处理时,有很强大的功能。下面为大家介绍一下这两个函数的使用方法。如有错误,烦请指正。① lambda()lambda是一个匿名函数,我的理解是,我们在程序中需要实现一些比较简单的功能时(比如开根号、平方等),需要一个函数,但是又不想去申明一个函数的时候。我们可以通过...原创 2017-10-19 14:10:20 · 3854 阅读 · 0 评论 -
python os模块 常用命令
python os模块 常用命令python编程时,经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。以下列举常用的命令1. os.name——判断现在正在使用的平台,Windows 返回 ‘nt'; Linux 返回’posix'2. os.getcwd()——得到当前工作的目录。3. os.listdir()——指定所有目录下所有的...转载 2017-10-10 16:27:14 · 1438 阅读 · 0 评论 -
python中的数据标准化
我们在进行数据分析之前,一般需要将数据进行标准化。以便消除不同变量量纲的差异性。在python中进行数据标准化可以通过sklearn中的StandardScaler模块来实现。1)模块的导入我们可以通过下边的命令来导入StandardScaler模块 from sklearn.preprocessing import StandardScaler 2)常用函数...原创 2017-10-14 21:32:46 · 23744 阅读 · 1 评论 -
anaconda(python2.7)下安装xgboost
最近参加一个数据算法比赛,发现xgboost在各种比赛中经常出现。所以就想试一试这个大杀器的威力。下面是我在anaconda(python2.7)下安装xgboost的步骤。①在anaconda cloud上搜索xgboostanaconda cloud 的连接如下:https://anaconda.org/②找到自己需要的版本,点击进入③下载xgboost在D:...原创 2017-10-16 12:15:49 · 2510 阅读 · 0 评论 -
python对离散变量的one-hot编码
我们在进行建模时,变量中经常会有一些变量为离散型变量,例如性别。这些变量我们一般无法直接放到模型中去训练模型。因此在使用之前,我们往往会对此类变量进行处理。一般是对离散变量进行one-hot编码。下面具体介绍通过python对离散变量进行one-hot的方法。注意:这里提供两种哑编码的实现方法,pandas和sklearn。它们最大的区别是,pandas默认只处理字符串类别变量,s...原创 2017-11-17 15:32:07 · 14810 阅读 · 0 评论 -
准确率、精准率和召回率的理解
我们在在分类任务时,经常会对模型结果进行评估。评估模型好坏的指标有AUC、KS值等等。这些指标是通过预测概率进行计算的。而准确率、精准率和召回率也通过混淆矩阵计算出来的。下图是对混淆矩阵的介绍: 其中,TP:样本为正,预测结果为正;FP:样本为负,预测结果为正;TN:样本为负,预测结果为负;FN:样本为正,预测结果为负。准确率、精准率和...原创 2017-09-29 13:46:56 · 73796 阅读 · 8 评论 -
python提取字符串中的数字
我们在进行数据处理时候,可能想要提取字符串中的数字进行分析。可以通过如下的方法实现这一功能。def get_number(x): return float(filter(str.isdigit, str(x)))其中,x为输入的字符串,返回值为字符串中的数字。返回的结果为浮点型。 这个函数主要通过python的两个内置函数来实现,现在为大家介绍这两个内置函数的功能:...原创 2017-11-06 15:31:47 · 10462 阅读 · 0 评论 -
python对mysql的操作
MySQL是我们日常工作中经常用到的工具。我们在进行分析时往往第一步就是从数据库中提取分析所需要的数据。下面为大家介绍在python中MySQL的连接以及操作。①模块导入 import MySQLdbMySQLdb是python中对MySQL数据库进行操作的一个模块,通过此模块我们可以实现python对MySQL的连接以及各种增删改查的操作。 ②数据库的连接...原创 2017-11-15 17:44:21 · 1700 阅读 · 0 评论 -
Python导出csv中文乱码
在用Python将结果导出到csv中的时候,如果结果中有中文,经常会出现乱码的情况。这种情况下,我们可以通过如下语句导出csv: data.to_csv('3A_test.csv',index=False,encoding='utf_8_sig') ...原创 2017-12-14 14:19:45 · 14868 阅读 · 5 评论 -
conda下tushare的安装
无意间在一篇文章中看到了Tushare这个包,感觉挺有意思的。就想安装下来玩一下,在conda下安装的时候碰到了一些小问题。现在为大家介绍一下如何在anaconda下安装和使用Tushare。Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据...原创 2017-12-06 16:46:05 · 12722 阅读 · 3 评论 -
用Python绘制ROC曲线
在分类模型中,ROC曲线和AUC值经常作为衡量一个模型拟合程度的指标。最近在建模过程中需要作出模型的ROC曲线,参考了sklearn官网的教程和博客。现在将自己的学习过程总结如下,希望对初次接触的同学有所帮助。PS:网上的例子实在是晦涩难懂,在折腾了一下午之后终于搞定了。下面是我在学习过程中主要参考的资料,大家也可以学习一下。http://scikit-learn.org/sta...原创 2017-09-21 17:44:23 · 118409 阅读 · 32 评论