
Python
文章平均质量分 61
BabyFish13
不要急,慢慢来;控制好节奏,奋斗到底!
展开
-
Python之迭代器和生成器异同
迭代器是一个可以记住遍历的位置的对象。迭代器对象必须实现两个方法,iter() 和 next()。字符串、列表或元组等数据类型都是可迭代对象,但它们不是迭代器,因为它们不具有 next() 方法。迭代器对象用于遍历可迭代对象(如集合、列表等)的元素。生成器是Python提供的一种可以迭代的对象,但它不是通过列表或元组等数据结构来实现的,而是通过函数来实现。一个生成器函数看起来就像一个普通的函数,但它在需要返回值的地方使用yield关键字代替return。原创 2024-12-31 15:09:12 · 801 阅读 · 0 评论 -
Python2 与 Python3 的差异
我们在 pip 官方下载源 pypi 搜索 Python2.7 和 Python3.5 的第三方工具包数可以发现,Python2.7版本对应的第三方工具类目数量是 28523,Python3.5 版本的数量是 12457,这两个版本在第三方工具包支持数量差距相当大。(想象一下,同一目录下有 file.py,如何同时导入这个文件和标准库 file)Python3 中这一点将被修改,如果还需要导入同一目录的文件必须使用绝对路径,否则只能使用相关导入的方式来进行导入。从类型上讲,与"/"运算符返回类型逻辑一致。原创 2024-12-29 18:03:13 · 1647 阅读 · 0 评论 -
被卷到“准下岗”的10种编程语言
技术在不断发展,我们使用的编程语言也不例外。随着人工智能日益普及,并影响这些语言的使用,人们更关注哪些语言将在未来依然坚挺,哪些会销声匿迹。包括,而其他语言比较小众,似乎正在失宠。唯有变化是不变的,你应该远离以下这9种语言,它们可能很快不会成为主要角色。原创 2024-12-26 21:23:28 · 583 阅读 · 0 评论 -
Python中lambda表达式的使用
lambda 表达式是Python中的一种简洁的匿名函数表达方式,它用于创建简单的函数,通常在不需要定义完整函数的情况下使用。lambda 表达式的语法非常简洁,适合编写一行的小函数。lambda 表达式用于简化代码,尤其适用于短小的函数,避免显式定义完整函数。虽然它方便,但当函数较为复杂时,还是建议使用普通函数定义,以提高代码的可读性。原创 2024-12-24 11:29:56 · 881 阅读 · 0 评论 -
Python推导式学习
(1)推导式可以嵌套,但应当谨慎使用以避免代码变得难以理解。(2)推导式可以包含多个 for 子句和 if 条件,但通常应保持简洁明了以便于阅读和维护。(3)在使用推导式时要注意内存消耗,尤其是处理大数据集时,推导式可能会比传统循环更快但也可能消耗更多内存。原创 2024-12-24 10:08:52 · 1045 阅读 · 0 评论 -
Python 中的列表推导式学习
输出 [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]# 输出 [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8], [0, 3, 6, 9, 12], [0, 4, 8, 12, 16]]print(combined) # 输出 [('a', 1), ('b', 2), ('c', 3), ('d', 4)]原创 2024-12-24 09:25:37 · 343 阅读 · 0 评论 -
python中list如何去除重复值
在Python中,有多种方法可以从列表中去除重复值。原创 2024-12-24 08:29:40 · 388 阅读 · 0 评论 -
Python中r‘ ‘, b‘ ‘, u‘ ‘, f‘ ‘的含义及用法详解
在Python中,r' ',b' ',u' ',f' '等前缀和格式化字符串是用于处理不同类型文本和数据的工具。r前缀表示原始字符串,b前缀表示字节字符串,u前缀表示Unicode字符串,f前缀表示格式化字符串。了解这些前缀的含义和用法有助于更好地处理不同类型的字符串和数据。原创 2024-12-19 10:43:10 · 918 阅读 · 0 评论 -
配合任务迁移数仓ETL脚本按需替换方案
1、需求场景描述Etl任务迁移,需要对原etl脚本进行改造。将原实际的目标及源库名替换成参数样式。老的方式:ods.user_visit_new、dwt.dwt_user_visit要替换成的格式:源表 使用 c.from 前缀,如 ${c.from.ods}.user_visit_new目标表 使用 c.to 前缀,如: ${c.to.dwt}.dwt_user_visit2、具...原创 2019-12-12 20:33:32 · 442 阅读 · 0 评论 -
Python命名及编码规范
1 命名规范1.1、模块名 尽量使用小写,尽量使用下换线import myclass1.2、类名 使用骆驼写法,单词首字母大写,私有类可以下划线开头class MyClass(): passclass YouClass(): pass1.3、函数名一律小写,若有多个单词用下划线隔开;私有函数下划线开头def my_func(var1, var2): pa...原创 2019-12-10 10:39:44 · 444 阅读 · 0 评论 -
数仓中根据etl脚本查找表的上游依赖关系
1、具体脚本/Users/nisj/Documents/wptDataGit-nisj/wptData/pyScript/batchDataForWpt/getDependsFromSql.py# -*- coding=utf-8 -*-import osimport reimport datetimeimport warningsimport timeimport thread...原创 2019-11-09 13:51:12 · 1046 阅读 · 0 评论 -
Python下的Mysql模块MySQLdb安装
在Python环境下,如果想操作MySQL数据库,需要调用相应的包,比如常用的:MySQLdb通过导入import MySQLdb后,可直接调用里面的方法。如果模块未提前安装,则会报相应的错误:ImportError: No module named MySQLdb;所以,Python下的Mysql模块MySQLdb需要提前安装。1、下载 MySQL for Python 地址:htt原创 2016-03-22 20:18:34 · 1113 阅读 · 0 评论 -
Python操作Oracle、Mysql及文本进行数据处理
1、脚本中中到的表结构信息CREATE TABLE `static_sdk_room_messge_send` ( `xappkey` varchar(100) DEFAULT NULL, `roomid` varchar(100) DEFAULT NULL, `messge_send_cnt` bigint(20) DEFAULT NULL, `pt` varch原创 2016-11-04 10:55:25 · 2024 阅读 · 1 评论 -
python cx_Oracle模块的安装
对于Oracle客户端,不只需要安装相应的python模块,还需要安装Oracle Client;还需要配置tnsnames.ora(当然也可以简单的通过host:port/instance访问)。1、下载安装cx_Oracle python模块[root@master pystudy]#wget https://pypi.python.org/packages/3b/67/d原创 2016-11-04 12:02:05 · 2196 阅读 · 0 评论 -
Mysql分表数据通过Python进行汇总统计
接上文:【Mysql分表数据通过Shell进行导出与统计】---> http://blog.youkuaiyun.com/babyfish13/article/details/527777801、每个分表数据量及总数据量统计mysql_much_tab_data_static1.py# -*- coding=utf-8 -*-import smtplibimport MySQLdb原创 2016-11-09 14:31:50 · 3251 阅读 · 0 评论 -
Python进行数据的Group by、取最大值、子查询及从分表取数据一例
1、从分表之一预计算select A.room_id,SUBSTRING(A.created_time,1,10) days,max(A.online_count)from room_online_stat_15 Awhere SUBSTRING(A.created_time,1,10) between '2016-11-15' and '2016-11-21' and category原创 2016-11-29 07:28:42 · 8177 阅读 · 0 评论 -
Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode问题解决
执行一段Python代码时报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)/Users/nisj/PycharmProjects/EsDataProc/excel_index_find.py# -*- coding=utf-8 -原创 2016-11-29 09:54:48 · 4367 阅读 · 0 评论 -
Python进行数据的Join关联操作及从分表取数据一例
这样的功能主要用在两表分别在不同的数据库上,在数据库层面不同步数据关联不了的情况。且目前,被关联的表公仅支持是key/value两列数据的情况。1、数据准备-- 主表select * from x_student_scoresinsert into x_student_scoresselect 1,'语文',1,98 union all select 2,'数学',1,99 uni原创 2016-11-30 18:41:56 · 4608 阅读 · 0 评论 -
使用Python实现Hive的UDF示例
主要分为两个部分,一个部分为Python脚本实现想要实现的功能,另外一个部分为HQL部分,调用Python脚本对数据进行处理。HQL调用Python实现的UDF其实有一个重定向的过程,把数据表中之列的列重定向Python的标准输入中,按行操作,首先将每行按照指定的分割符分开,一般为’\t’,然后剩下的就是对其进行操作,print需要的列,以’\t’分割。1、Python实现的UDF代码原创 2016-12-10 15:49:23 · 5437 阅读 · 0 评论 -
用Python和AWK结合处理Access log请求信息
本样例主要用于处理Tomcat及nginx的access访问日志请求信息,是一个初步的版本。在此基础之上,还可以进行多线程、在Hadoop上运行等优化处理,有待完善。1、示例原始access_log文件/Users/nisj/Desktop/new-demand/x-log.txt183.144.201.217 10.26.2.58|[06/Sep/2016:19:10:53 +08...原创 2016-12-02 17:35:22 · 5439 阅读 · 0 评论 -
用Python处理Access log请求信息
接上文,《用Python和AWK结合处理Access log请求信息》--->http://blog.youkuaiyun.com/babyfish13/article/details/53436844上文中,基本上相当于用Python处理access log列的展示问题,而用awk处理saccess log中条件过滤问题;本文作了一定的改进,全部用Python来进行数据的处理。对应的Python代码...原创 2016-12-04 10:20:52 · 977 阅读 · 0 评论 -
用Python和Shell结合进行词频统计
1、示例测试文本/Users/nisj/PycharmProjects/EsDataProc/word.txtfoo|-X-|foo|-X-|quux|-X-|iio|-X-|oo|-X-|pp|-X-|pp|-X-|oosee|-X-|you|-X-|you|-X-|again|-X-|welcome|-X-|testtest|-X-|ddd|-X-|gggg|-X-|gggacc原创 2016-11-23 11:33:08 · 945 阅读 · 0 评论 -
Python进行数据的Group by、sort、limit及从分表取数据一例
1、在Mysql单表上操作# mysql 单表select * from (select uid,sum(gift_point) gift_point from gift_record_61 where gift_id in(28,29) group by uid)x order by 2 desclimit 102、在Hive汇总表上计算hive上的表,是将Mysql上的原创 2016-11-24 15:25:15 · 6861 阅读 · 0 评论 -
Python中list的交、并、差集获取方法
1. 获取两个list 的交集# -*- coding=utf-8 -*-#方法一:a=[2,3,4,5]b=[2,5,8]tmp = [val for val in a if val in b]print tmp#[2, 5]#方法二print list(set(a).intersection(set(b)))2. 获取两个list 的并集print list(s原创 2016-11-24 16:21:47 · 23076 阅读 · 1 评论 -
Python进行数据的多表Join关联操作
在[Python进行数据的Join关联操作及从分表取数据一例]--->http://blog.youkuaiyun.com/babyfish13/article/details/53411743 一文中,数据的关联操作仅支持从表是key/vaule两列的形式;本文中要实现的关联对主从表的列数都没有限制。对于精通Java、Python及C等开发语言的用户,数据的关联取数采用本文介绍的for循环if判断的方式原创 2016-12-08 19:50:50 · 15086 阅读 · 0 评论 -
Python进行数据的多表去重示例
1、Python集合及其交并差操作python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set。作为原创 2016-12-09 20:46:07 · 2340 阅读 · 1 评论 -
Pip安装及使用
1、下载pip并安装# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate# tar -xzvf pip-1.5.4.tar.gz# cd pip-1.5.4# python set原创 2016-12-16 20:40:44 · 1070 阅读 · 0 评论 -
使用Python脚本从Hive中取数据计算后加载到Mysql示例
由于没有在服务器上安装Python库的权限,所以此文中采用了Os操作Hive及Mysql库的方式进行数据的读取和写入。重点关注和学习:Python接收和传送通过Os操作数据库的方式;外部参数传送到Python并使用;Python进行数据分组汇总;利用Python的set对象进行数据的去重及交、并、差的操作;Python的set、list、str之间的相互转换;Pytho原创 2016-12-21 11:05:15 · 4990 阅读 · 1 评论 -
Python多线程调用Hive接口的MapReduce示例
1、单线程Hive调用/Users/nisj/PycharmProjects/EsDataProc/bi-static/hive-user_appsource_detail.py# -*- coding=utf-8 -*-import warningsimport datetimeimport timeimport oswarnings.filterwarnings("igno原创 2017-01-03 15:54:48 · 1523 阅读 · 0 评论 -
用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(1)
需求:根据access_log数据,按平台与渠道维度统计出某一天之前的独立identifier数量。Hdfs文件对应的表结构信息:源表CREATE TABLE `bi_all_access_log`( `appsource` string, `appkey` string, `identifier` string, `uid` string)PARTIT原创 2016-12-23 17:30:35 · 1558 阅读 · 0 评论 -
用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(2)
要实现的需求与相关表结构信息见【用Python编写MapReduce代码与调用-某一天之前的所有活跃用户统计(1)--->http://blog.youkuaiyun.com/babyfish13/article/details/53841990】考虑到此需求与词频统计有一定的相似性,所以代码由词频统计改编而成;且保证了无论如何调试和调用,数据的准确性。1、mapper/Users/nisj/Py原创 2016-12-23 18:38:51 · 950 阅读 · 0 评论 -
Python由词频统计改编的数据分组汇总
1、初步功能脚本/Users/nisj/PycharmProjects/EsDataProc/WordCount&Groupby.py# -*- coding=utf-8 -*-import reimport collections'''从传入的参数中,统计词频'''def count_word(words): result = {} # 大写转小写原创 2016-12-24 10:40:33 · 1584 阅读 · 0 评论 -
初学Python-threadpool多线程编程
1、示例及说明/Users/nisj/PycharmProjects/EsDataProc/thread_pool_ping.py# -*- coding=utf-8 -*-import threadpoolimport timeimport urllib2urls = [ 'http://www.163.com', 'http://www.sohu.com',原创 2016-12-24 17:22:03 · 1796 阅读 · 0 评论 -
Python获取时间范围内日期列表和周列表的函数
1、获取日期列表/Users/nisj/PycharmProjects/EsDataProc/bi-static/date_list.py# -*- coding=utf-8 -*-import datetimedef dateRange(beginDate, endDate): dates = [] dt = datetime.datetime.strptime(b原创 2017-01-04 13:59:40 · 12029 阅读 · 0 评论 -
Python根据指定日期获取周的信息
1、获取指定日期所在的周的每一天/Users/nisj/PycharmProjects/EsDataProc/bi-static/calc_day_in_week.py# -*- coding=utf-8 -*-import datetimedef week_get(vdate): dayscount = datetime.timedelta(days=vdate.isowe原创 2017-01-05 12:42:30 · 7826 阅读 · 2 评论 -
Python取周的相关信息的几个函数
主要包括:获取指定日期对应哪一年的第几周、获取当前日期对应哪一年的第几周、获取当前日期这一周的第一天的日期、获取指定周的第一天日期。/Users/nisj/PycharmProjects/EsDataProc/bi-static/getWeekInfo.py# -*- coding=utf-8 -*-import datetimedef getYearWeek(strdate):原创 2017-01-06 12:32:50 · 6553 阅读 · 0 评论 -
向python脚本传递参数的方法
需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数1: sys.argv[1]参数2: sys.argv[2]参数列表:sys.argv[1:]下面通过示例代码及操作来说明参数传递的具体使用。示例1:/Users/nisj/PycharmProjects/EsDataProc/par_transfter原创 2016-12-20 21:33:09 · 8884 阅读 · 0 评论 -
Python-threadpool多线程多个参数传入示例
主要找到了两种方法,一种是将参数构造成List进行传入;还有一种是将参数构造成dict进行传入。样例代码:/Users/nisj/PycharmProjects/EsDataProc/bi-static/ThreadPool_multiPar.py# -*- coding=utf-8 -*-import threadpoolimport timedef Main_Def(par原创 2017-01-09 18:38:42 · 13601 阅读 · 0 评论 -
Python多线程跑Hive批一例
本示例的功能主要是按天计算新设备在接下来一个月内每天的留存、注册转化、转化用户充值及注册用户留存等。程序分为三大部分:数据日期的处理、计算留存等指标的过程及批量代码多线程调度。1、数据日期处理的代码/Users/nisj/PycharmProjects/EsDataProc/RemainProcByDay/DayProc.py# -*- coding=utf-8 -*-import原创 2017-02-07 09:38:26 · 2229 阅读 · 2 评论 -
Python模块化开发组织代码程序示例
样例包含三部分代码,周的处理函数部分、业务数据处理部分及多线程跑批调度处理部分。代码按功能分类存放,有助于使代码更清晰,通过from...import的方式,使代码重复使用。另外,多线程的调用部分,有效处理了程序先后依赖及多程序串并行跑批问题,为以后相似问题的处理,提供了借鉴。1、周处理函数/Users/nisj/PycharmProjects/EsDataProc/Remain_原创 2017-01-16 19:14:31 · 2833 阅读 · 0 评论