首页 文章 精选 留言 我的

精选列表

搜索[c 17],共10000篇文章
优秀的个人博客,低调大师

开源人张亮的 17 年成长路线,热爱才能坚持

当一个人处在持续地追求与锋锐地思索状态中,他将收获怎样的价值与自由? 有人说,敲过万行代码的程序员,可以写一份基础版入行指南,给初阶人群作入门参考。码过十万行代码的程序员,能写一本进阶版技术手册,给陷入发展瓶颈的人们“指点一二”。而完成了近千万行代码的“顶级选手”,已经无需再进行形式繁琐的“叙言著传”,其存在本身,就会为大众带来极强的正面激励与价值启迪。 今天为大家介绍的张亮,便是我们所描述的,写过近千万行代码的“神级选手”。在着力参与开源项目建设时,张亮共计提交了 9,138,592 行代码。2372 天里,张亮“笔耕不辍”,平均每三天就会贡献近 10,000 行代码。在日复一日的坚持中,每天提交 3、4 次代码已是张亮的个人生活里的必选题,甚至比日常三餐还要准时、高频。 数据之巨,比照业内,是惊人的创造力。心力之坚,对比芸芸众生,更是寥寥无几。 谈及其背后的支撑性力量,张亮用八个字概括:『因为热爱,所以勤奋。』 这份热爱支撑着他经历了一次又一次的角色切换:从一名普通开发者到全球顶级开源项目的创造者,再到成为一家创业公司的 CEO。十七年间,张亮的角色在不断进阶,不变的是他最初投身开源行业的热情与初心。对张亮来说,面前的二十多寸的显示器不仅构筑了能让他尽情挥洒自身热情与优势的多维世界,一幅有关开源行业历史与未来发展的巨幅画卷也在他眼中悄然形成... 一、践行代码世界里的『完美主义』 追求优雅代码,是学问,更是艺术 在张亮的代码世界里,优雅代码构成了一种秩序之美,是他在代码世界里追求『完美主义』的主要方式。 理念:用优雅为“技术”赋予灵魂 熟悉张亮的同学们都知道,『优雅』,是他一直挂在嘴边的词。项目架构要优雅、程序运行要优雅、代码观感更要优雅。 但起初的张亮并不是优雅代码的拥护者。将时间拨回到十几年前,21 世纪初的那几年中,程序员们的创造力还远远没有被激发出来,大多都是按部就班,将所写出来的一行行代码当作是实现功能的工具,至于设计灵性、可读性,更是无从谈起。 但事实却是,对于开发而言,在实现代码简洁的同时要确保代码的易读性、易维护和可拓展,这既是学问、也是艺术。代码不仅仅是实现需求的工具,更是对业务领域理解和抽象的体现。 优雅代码应怎样解释?怎样的代码是优秀且优雅的代码呢?在阅读《代码整洁之道》时,张亮找到了答案: 优雅代码好似军规,严格且行列整齐规范,要求软件工程师要有条理,需要清晰的规则底线; 优雅代码有层级分明、清晰的思路,要求代码的抽象层级要相同; 优雅代码之间的模块之间可以被解耦,且关系更清晰; 优雅代码需具备极简性。 “把代码做得漂亮”,这不单需要考虑注释、格式等视觉效果。还有诸多细节需要兼顾,比如变量名取得是否恰当、类与函数的权责划分是否清楚等等。在细节与态度之外,也会考验一名开发者是否具备较强的整体架构设计能力。架构设计是否合理,功能分支是否平衡,都是考验一个项目本身优雅程度的重要因素。 但要在项目中践行优雅代码并不是一件简单的事,如何衡量项目中代码的优雅程度?如何保持项目整体的优雅与健壮?这些还要从为什么要参与开源说起。因为只有在开源生态中,才能最大化发挥出优雅代码的价值,也都关系到开发者撰写的代码能否匹配上更高阶的开源生态。 摸索:在开源社区的试错历程 人的成长、成熟,需要历经时间与实践的打磨。在成长为开源圈的顶级玩家之前,张亮经历了一个反复试错、持续优化自我的过程。 过去,企业往往会围绕不同的业务形成数个典型的烟囱式业务架构,程序员只会为自己的那一个烟囱而服务。这就导致部门间的代码不开放,因为不需要给外部人看,进而开发者缺乏写文档的动力。同时也由于企业内部的功能不互通,产生了许多能力重叠的工具。因此,为了让技术在行业、领域间自由流动起来,团队与团队间的协作更加紧密和默契,减少重复造轮子的工作,就需要有一个平台或社区来承担起这样的能力,让开发者能够随时提交新的功能分支,添加更加丰富的特性功能,形成开源代码文化,创建更好的工程师氛围。 这便是参与开源的意义。 当还在读大学的张亮第一次在编程实战课程上了解到 Apache Tomcat 时,他对开源产生了强烈的学习兴趣。当看到全球顶级项目被编排成整齐铅字写进课本,形成整齐且优雅的美感时,张亮内心涌现起一种愿望:“我也想写出能被选入教材、在全球流行的软件。” 因此张亮认为,技术人应有更清醒的判断与认知,而不是拘泥于现实条件及传统路径,应该从更高维度去思考,重构出与基础设施更加匹配的网络架构。这便是张亮面向开源领域,在未来成功打造出顶级开源项目的第一步。 在技术价值层面,为自己个人的发展寻找一个精准的锚点。这个锚点,一定是要符合产业、行业发展趋势的,才能让开源项目拥有更长的生命周期和更广阔的发展空间。 锚点:面向分布式架构重写当时的基础设施 当时,恰逢中国互联网的高速爆发期。在一边追求优雅代码、打磨自身技术,争取与更多人共享技术价值的同时,张亮也敏锐察觉到现实世界出现的“不和谐颤音”——当时的互联网世界多为传统的集中式数据架构,但与正在高速发展的国内现实环境已愈发难以匹配。 随着线上应用场景的不断扩张,数据库碎片化进程日益加速,数据库的架构、协议、功能、适用场景也愈加多样化。在数据库架构方面,基于单机系统演进而来的集中式数据库与原生面向分布式的新一代数据库并存;在数据库协议方面,MySQL 和 PostgreSQL 这两大主要开源生态以及厂商提供的生态也在数据库体系中各自占有一席之地;每种数据库的独特功能和适用场景也愈发繁多。 于是,碎片化成为数据库领域的大势所趋,单一品类的数据库无法适用于所有场景,只能适用于某一种或某几种擅长的场景。 因此需要从实战出发,匹配中国互联网的需求,打造开源项目的优点与独特性。正是在这样的大背景下,时代将开源、优雅代码与张亮绑定在了一起。 二、叩开开源宇宙中“荣誉之门” 从“先者奋楫”到“百舸争流” 孵化开源社区的过程,也是张亮个人沉淀自我、扩大视野、开放格局的过程。 从最初的 3 个模块成长到如今的 220 个模块,成为 Apache 顶级项目的荣誉之路,ShardingSphere 共走了七年。故事回到最初的起点,从 ElasticJob 到 Sharding-JDBC 再到 ShardingSphere。七年间,以张亮为主导的开源项目经历了一个从无人问津到小有名气再到大放异彩的发展过程。所有的迭代,都是勤奋的思考和大量的重构打磨而来。 在对开源项目的运营中,张亮以坚定的意志,将大量的时间、精力投入到项目中去。七年间,张亮对 ShardingSphere 进行持续地打磨、重构。在 ShardingSphere 社区内部,张亮个人贡献的代码量一度达到 80%以上。随着 ShardingSphere 一路的成长、转型、升级,张亮对于开源世界的理解与认知也发生了转变:『在开源之后,如何能让整个项目长期稳定地运行下去?』 “一个成功开源项目的毁誉都是属于社区的,一个成熟的社区和个人的开源项目是有本质区别的。” 开源不是一个人的游戏,从刚涉足开源时几个小项目的默默无闻,到 ElasticJob 初见成效,再到 Sharding-JDBC 进化为 Apache ShardingSphere 并成长为一个世界级开源项目。张亮明白,如果想做好一款开源项目,让项目能蓬勃发展起来,那么最好的方式是聚集社区力量。你可以是这个项目的创始人、是主导者,但不能是唯一的拥有者。 在最开始进入到开源社区时,张亮会十分关注来自他人的评论,因为一个功能争得面红耳赤更是常事,『完美』是他常挂在嘴边的词。但有时,自己认为的完美,在他人看来却“不够实用”。『千人千面,即便是在同一场景下,每个人对于功能和需求的理解也是存在差异的。属于一个人的项目,和属于社区的项目,是有本质区别的』。 区别就在于,个人项目的上限是受到个人能力制约的,其发展的深度与广度,完全取决于原作者的技术与视野。但从宏观的视角出发,归属于社区的开源项目,如果想具有极高发展上限,更依靠社区中『五花八门』的场景与需求。张亮认为,“接受并欢迎社区出现多元声音,并有效挑选出具有建设性意义的声音”是一个让开源项目获得实质性成长、让开源社区愈发茁壮的必经过程。在个人精神层面,张亮成就感的来源也在变化:从占据主导的主人翁精神渐渐平稳,取而代之的是格局更高、视野更广的家翁式精神。 在全球技术极客的热衷参与下,如今 ShardingSphere 基本已经成为了程序员使用中必不可少的一部分,其功能使用场景更加广泛、其用户基础量也呈现出指数级增长趋势。对目前的 ShardingSphere 来说,项目恰好赶上了中国互联网爆发的机遇,ShardingSphere 功能十分匹配中国互联网的发展需求。由于面向的是基础设施,完全可以说 ShardingSphere 是互联网企业后台数据库的『刚需』,这也是 ShardingSphere 的独特性所在。 经过数年打磨与试炼,ShardingSphere 在 Apache 基金会从“种子选手”成长为“亲传弟子”,社区的活力也在加入基金会后愈发强劲,ShardingSphere 社区逐步蜕变成一个能够让全球开发者、技术极客、开源爱好者等人互相碰撞思想的大本营。社区为所有对 ShardingSphere 感兴趣的人们提供开放的技术、相同的谈资以及共同的热情,成为一个跨越时空的全球交流据点。 三、在商业象限内 为全球技术人搭建一个“耀眼舞台” 国内从来不缺优秀和聪明的开发者,但缺少的是能够让开发者去持续付出心血的环境,以及稳定的项目基石。 张亮认为,优秀的开源项目与经典的话剧类似。经典话剧的价值会在不同演员的共同演绎下、在一次次令人惊喜的突破里历久弥新。其魅力会代代传递,在行为层面呼唤人们参与,也在心灵层面引起大家的共鸣。 正是凭借这样的初心,张亮计划在自己热爱的开源领域,为全球技术人搭建了一个能挥洒热情、发挥才华的“舞台”。2021 年初,在张亮与多位创始人的努力下,SphereEx 公司应运而生。公司以开源项目 ShardingSphere 为基础,面向 B 端客户提供专业性的商业解决方案。“开源与商业并不互斥。恰恰相反,两者能够以更加互补的方式推动对方发展,开源能够为商业公司带来坚实的用户基础,而商业也能够反哺开源,从而建立更加完善、友好的社区生态。” 从开源领域的先驱者进化成积极接受商界洗礼及资本审视的创业人,面对这种变化,张亮坦言创业拓展了自己的能力边界:“当我作为 ShardingSphere 项目主导人时,更多是作为技术管理者的角色去对 ShardingSphere 的顶层设计做思考决策,更偏向于产品思维。当我的身份是 SphereEx 的商业运营者时,我考虑更多的是如何设计出让 SphereEx 可持续经营的商业模式,如何在客户需求与市场需求间做合理权衡。公司的创建者和技术管理者所关注的重点是不同的,技术管理者关注的是代码质量及产品架构设计,而公司管理者会更关注现金流、营收、商业策略、团队搭建等。” 面对波谲云诡的商界,张亮表示虽然创业具有挑战,但在公司商业化运营的过程中,他热爱开源行业的初心以及面对挑战时产生的兴奋感却没有改变。从技术到商业,其实很像是换了个场景打怪升级,王牌打法是可以场景通吃的。张亮认为,不论在面对哪种场景问题,重要的是拥有架构性思维。“首先需要具备静态架构的能力,这需要你有全局视角,这样才能设计出合适且完备的底层结构。另一方面,你也要有动态架构的视野,这样才能随着现实环境的变化而灵活变通,让静态结构更富活力。” 在热爱的领域,人会心甘情愿地给自己“树立规矩”,并且坚持到底。没有这条规矩,他将不是他自己。 对于张亮来说,以百分之百的热情与精力投入到开源领域中,便是多年来心甘情愿为自己树立、并一以贯之、坚持到底的“规矩”。 在开源旅途中,张亮始终跟随着心中热爱的召唤,以源源不断的勇气与毅力,在开源之路上持续前进着:体会过数次项目重构、转型的苦涩;经历过近十年的技术研读、积淀时的蛰伏时期;也品尝过独力承担近千万行巨额代码量的现实辛辣之感...但,风雨过后,他也同时获得了超越个人视角外,更宏大、丰富、多维的价值与自由。 对个人兴趣的热烈追求、与志趣相投友伴的并肩作战、让心中愿景在现实层面“完美落地”、让个人价值通过全球协作而无限放大,且将价值反哺、惠及众人....这些现实层面的成就感,组成了张亮开源路途中的色彩鲜明的风景线。 对于张亮来说,对开源的热爱,是一个永无止境的过程。而开源宇宙更光明、恢弘的未来,也正在如张亮一般,对开源有执着追求、独到思考与无限热爱的开源者们的共同建设中,慢慢到来。 欢迎点击链接,了解更多内容: Apache ShardingSphere 官网:https://shardingsphere.apache.org/ Apache ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere SphereEx 官网:https://www.sphere-ex.com

优秀的个人博客,低调大师

我用Python的Seaborn库绘制17个超好看图表

点击上方“ Python爬虫与数据挖掘 ”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 风朝露夜阴晴里,万户千门开闭时。 Seaborn简介 定义 Seaborn是一个基于matplotlib且数据结构与pandas统一的统计图制作库。Seaborn框架旨在以数据可视化为中心来挖掘与理解数据。 优点 代码较少 图形美观 功能齐全 主流模块安装 pip命令安装 pip install matplotlibpip install seaborn 从github安装 pip install git+https://github.com/mwaskom/seaborn.git 流程 导入绘图模块 mport matplotlib.pyplot as pltimport seaborn as sns 提供显示条件 %matplotlib inline #在Jupyter中正常显示图形 导入数据 #Seaborn内置数据集导入dataset = sns.load_dataset('dataset')#外置数据集导入(以csv格式为例)dataset = pd.read_csv('dataset.csv') 设置画布 #设置一块大小为(12,6)的画布plt.figure(figsize=(12, 6)) 输出图形 #整体图形背景样式,共5种:"white", "dark", "whitegrid", "darkgrid", "ticks"sns.set_style('white')#以条形图为例输出图形sns.barplot(x=x,y=y,data=dataset,...)'''barplot()括号里的是需要设置的具体参数,涉及到数据、颜色、坐标轴、以及具体图形的一些控制变量,基本的一些参数包括'x'、'y'、'data',分别表示x轴,y轴,以及选择的数据集。''' 保存图形 #将画布保存为png、jpg、svg等格式图片plt.savefig('jg.png') 实战 #数据准备df = pd.read_csv('./cook.csv') #读取数据集(「菜J学Python」公众号后台回复cook获取)df['难度'] = df['用料数'].apply(lambda x:'简单' if x<5 else('一般' if x<15 else '较难')) #增加难度字段df = df[['菜谱','用料','用料数','难度','菜系','评分','用户']] #选择需要的列df.sample(5) #查看数据集的随机5行数据 #导入相关包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib as mplimport seaborn as sns%matplotlib inlineplt.rcParams['font.sans-serif'] = ['SimHei'] # 设置加载的字体名plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题sns.set_style('white') #设置图形背景样式为white 直方图 #语法'''seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None,hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None,vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)'''#distplot()输出直方图,默认拟合出密度曲线plt.figure(figsize=(10, 6)) #设置画布大小rate = df['评分']sns.distplot(rate,color="salmon",bins=20) #参数color样式为salmon,bins参数设定数据片段的数量 #kde参数设为False,可去掉拟合的密度曲线plt.figure(figsize=(10, 6))sns.distplot(rate,kde=False,color="salmon",bins=20) #设置rug参数,可添加观测数值的边际毛毯fig,axes=plt.subplots(1,2,figsize=(10,6)) #为方便对比,创建一个1行2列的画布,figsize设置画布大小sns.distplot(rate,color="salmon",bins=10,ax=axes[0]) #axes[0]表示第一张图(左图)sns.distplot(rate,color="green",bins=10,rug=True,ax=axes[1]) #axes[1]表示第一张图(右图) #多个参数可通过字典传递fig,axes=plt.subplots(1,2,figsize=(10,6))sns.distplot(rate,color="salmon",bins=20,rug=True,ax=axes[0])sns.distplot(rate,rug=True, hist_kws={'color':'g','label':'直方图'}, kde_kws={'color':'b','label':'密度曲线'}, bins=20, ax=axes[1]) 散点图 常规散点图:scatterplot #语法'''seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None,data=None, palette=None, hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None,y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha='auto',x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))#hue参数,对数据进行细分sns.scatterplot(x="用料数", y="评分",hue="难度",data=df,ax=axes[0])#style参数通过不同的颜色和标记显示分组变量sns.scatterplot(x="用料数", y="评分",hue="难度",style='难度',data=df,ax=axes[1]) 分簇散点图:stripplot #语法'''seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, jitter=True, dodge=False, orient=None, color=None,palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)'''#设置jitter参数控制抖动的大小plt.figure(figsize=(10, 6))sns.stripplot(x="菜系", y="评分",hue="难度",jitter=1,data=df) 分类散点图:swarmplot #绘制分类散点图(带分布属性)#语法'''seaborn.swarmplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, dodge=False, orient=None, color=None, palette=None,size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)'''plt.figure(figsize=(10, 6))sns.swarmplot(x="菜系", y="评分",hue="难度",data=df) 条形图 常规条形图:barplot #语法'''seaborn.barplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None,ci=95, n_boot=1000, units=None, orient=None, color=None,palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None,ax=None, estimator=<function mean>,**kwargs)'''#barplot()默认展示的是某种变量分布的平均值(可通过修改estimator参数为max、min、median等)# from numpy import medianfig,axes=plt.subplots(1,2,figsize=(10,6))sns.barplot(x='菜系',y='评分',color="r",data=df,ax=axes[0])sns.barplot(x='菜系',y='评分',color="salmon",data=df,estimator=min,ax=axes[1]) fig,axes=plt.subplots(1,2,figsize=(10,6))#设置hue参数,对x轴的数据进行细分sns.barplot(x='菜系',y='评分',color="salmon",hue='难度',data=df,ax=axes[0])#调换x和y的顺序,可将纵向条形图转为水平条形图sns.barplot(x='评分',y='菜系',color="salmon",hue='难度',data=df,ax=axes[1]) 计数条形图:countplot #语法'''seaborn.countplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))#选定某个字段,countplot()会自动统计该字段下各类别的数目sns.countplot(x='菜系',color="salmon",data=df,ax=axes[0])#同样可以加入hue参数sns.countplot(x='菜系',color="salmon",hue='难度',data=df,ax=axes[1]) 折线图 #语法'''seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None,data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None,size_norm=None, dashes=True, markers=None, style_order=None, units=None, estimator='mean',ci=95, n_boot=1000, sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))#默认折线图有聚合sns.lineplot(x="用料数", y="评分", hue="菜系",data=df,ax=axes[0])#estimator参数设置为None可取消聚合sns.lineplot(x="用料数", y="评分", hue="菜系",estimator=None,data=df,ax=axes[1]) 箱图 箱线图:boxplot #语法'''seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, orient=None, color=None, palette=None, saturation=0.75,width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))sns.boxplot(x='菜系',y='评分',hue='难度',data=df,ax=axes[0])#调节order和hue_order参数,可以控制x轴展示的顺序,linewidth调节线宽sns.boxplot(x='菜系',y='评分',hue='难度',data=df,color="salmon",linewidth=1, order=['清真菜','粤菜','东北菜','鲁菜','浙菜','湖北菜','川菜'], hue_order=['简单','一般','较难'],ax=axes[1]) 箱型图:boxenplot #语法'''seaborn.boxenplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, orient=None, color=None, palette=None, saturation=0.75,width=0.8, dodge=True, k_depth='proportion', linewidth=None, scale='exponential',outlier_prop=None, ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))sns.boxenplot(x='菜系',y='评分',hue='难度',data=df,color="salmon",ax=axes[0])#palette参数可设置调色板sns.boxenplot(x='菜系',y='评分',hue='难度',data=df, palette="Set2",ax=axes[1]) 小提琴图 #语法'''seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None,hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True,gridsize=100, width=0.8, inner='box', split=False, dodge=True, orient=None,linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))sns.violinplot(x='菜系',y='评分',data=df, color="salmon",linewidth=1,ax=axes[0])#inner参数可在小提琴内部添加图形,palette设置颜色渐变sns.violinplot(x='菜系',y='评分',data=df,palette=sns.color_palette('Greens'),inner='stick',ax=axes[1]) 回归图 regplot '''seaborn.regplot(x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker='o', scatter_kws=None, line_kws=None, ax=None)'''fig,axes=plt.subplots(1,2,figsize=(10,6))#marker参数可设置数据点的形状sns.regplot(x='用料数',y='评分',data=df,color='r',marker='+',ax=axes[0])#ci参数设置为None可去除直线附近阴影(置信区间)sns.regplot(x='用料数',y='评分',data=df,ci=None,color='g',marker='*',ax=axes[1]) lmplot #语法'''seaborn.lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None, height=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None, col_order=None, row_order=None, legend=True, legend_out=True, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None, size=None)'''#lmplot()可以设置hue,进行多个类别的显示,而regplot()是不支持的sns.lmplot(x='用料数',y='评分',hue='难度',data=df, palette=sns.color_palette('Reds'),ci=None,markers=['*','o','+']) 热力图 #语法'''seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)'''fig,axes=plt.subplots(1,2,figsize=(10,6))h=pd.pivot_table(df,index=['菜系'],columns=['难度'],values=['评分'],aggfunc=np.mean)sns.heatmap(h,ax=axes[0])#annot参数设置为True可显示数字,cmap参数可设置热力图调色板cmap = sns.diverging_palette(200,20,sep=20,as_cmap=True)sns.heatmap(h,annot=True,cmap=cmap,ax=axes[1])#保存图形plt.savefig('jg.png') 欢迎关注菜J学Python,专注用Python爬虫、数据分析和可视化。我们坚持认真写Python基础,有趣写Python实战。 -------------------End------------------- 往期精彩文章推荐: 手把手用Python教你如何发现隐藏wifi 手把手教你用Python做个可视化的“剪刀石头布”小游戏 Python基础语法——代码规范&判断语句&循环语句 欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持 想加入Python学习群请在后台回复【入群】 万水千山总是情,点个【在看】行不行 /今日留言主题/ 随便说一两句吧~~ 本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

12月17日云栖号头条:支付巨头不怕“刷脸”遇冷?

云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯:2019年已是国内智能手机市场连续下滑的第三个年头,而5G的发展增速或将会给整个手机行业带来不同的改变;AI现在已经开始在孕期护理中发挥作用了,未来 AI 或许就是你专属的孕期医师,协助你完成胎儿的检查;尽管很多商家都换上了刷脸支付,但实际应用的过程中,刷脸支付却遭遇冷落,商家能够赚取的奖励也非常有限,但是两大支付巨头会因此“灰心泄气”吗?一起来看最新的资讯: IDC发布中国智能手机市场2020十大预测,全行业拥抱5G IDC发布中国智能手机市场2020十大预测,IDC认为,5G确如冬日暖阳,是帮助国内手机市场走出严冬的重要契机,但真正驱使市场前行,走出低谷的动力,应当来自于全体行业参与者基于新的技术趋势所做出的主动的变革和创新,进而在此过程中,创造并激发消费者的需求。 2019年全球私有AI投资超过700亿美元 根据《斯坦福2019全球AI报告》显示,2019年,全球私有AI投资超过700亿美元,相当于每天2亿多美元投向AI领域。此外,自动驾驶汽车在过去一年中获得了全球投资的最大份额(77亿美元),其次是AI医疗(47亿美元)、面部识别(47亿美元)、视频内容(36亿美元)和欺诈检测和金融(31亿美元)。 刷或不刷,“刷脸”支付就在这 随着商超、零售实体刷脸支付设备的普及,支付平台投入的优惠、奖励不断增加,可以预见即便当下消费者不乐于接受这种看似“不靠谱”的支付方式,但是“刷脸”大潮不会就此偃旗息鼓,或将愈演愈烈。表面看起来,这是一场支付方式的新竞争,实际上却是巨头布局新零售、抢占新支付入口的大战。尽管目前刷脸支付存在设备识别低、反应慢、鉴权繁琐等问题,但巨头不会就此停止渗透的步伐。在一众互联网巨头眼中,未来谁能率先获取公众的支付信任,培养出全民刷脸支付的习惯,谁就能打开新零售业态的大门。 AI现在还能为产妇提供孕期健康护理了 最近研究发现了人工智能在胎盘健康分析方面的神奇用途。目前正在开发的新方案就可以进行更准确、自动化即时性的胎盘诊断。通过人工智能的图像识别分析实现,可以诊断所有胎盘健康情况,进而减少被要求做进一步检查的产妇数量,它可以为分析胎盘情况创造一条不那么耗费资源的路径。人工智能将在最短的时间内帮助进行胎盘检查,使所有人都能获得检查结果。值得一提的是,这个研究的最终目标仍不是取代专业的医疗人员,而是帮助医务工作者做出更好、更快的决定,以便产妇和孩子可以在需要时得到足够的医疗支持。 中国人脸识别市场年均复合增长率超50%,预计2021年将达530亿元 与人脸识别系统相对应的是硬件设备部署,从满足数据存储比对的云平台服务器,到数据传输的网络交换机、无线传输设备,以及前端具体应用的监控设备和智能识别设备,共同构成了人脸识别应用的底层支撑。目前,人脸识别市场应用已经形成了软件与硬件相结合的完善产品服务,并逐步向着软硬一体化方向重点发展,如带有识别功能的人脸识别摄像头、人脸识别考勤机、人脸识别闸机、人证对比一体机等。 云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 【快速入门】一文带你读懂阿里云产品 云服务器ECS入门 个人版快速入门介绍如何使用ECS管理控制台创建、连接以及释放实例。 【场景入门】带你了解阿里云基础场景 数据迁移方案概览 RDS提供了多种数据迁移方案,可满足不同上云或迁云的业务需求,使您可以在不影响业务的情况下平滑将数据库迁移至阿里云云数据库RDS上面。 将数据迁移到OSS 用户希望将历史数据迁移到用户在OSS的某个目标Bucket上。 【热门案例】 你爱吃的坚果上云啦——三只松鼠上云案例 三只松鼠:“大促期间使用 k8s 节省资源,通过资源限定和优化,可以充分利用硬件资源,资源水位占比可以有效的控制在60%左右。线上发现问题可以快速滚动迭代,解决了服务上下线不优雅影响业务的痛点,增加了用户体验。 整体感受快、稳、方便”——三只松鼠云造技术中心 鼠稻米 云原生架构助力花生日记双11大促 花生日记:“我们架构到云原生微服务体系架构后系统整体的可靠性、稳定性、弹性和容错能力得到了很大提升,也提高了我们的IT资源利用率。帮助我们双十一平稳的支撑了平时6倍的业务高峰,峰值达到40k QPS。——花生日记 技术总监 文玩交易平台——微拍堂的上云之路 微拍堂:“作为国内首席移动端拍卖交易平台,公司业务发展迅速,给我们在跨公有云备份这块带来了新的挑战。阿里云DBS配置灵活、功能完善,很好解决了我们手工维护痛点。”—— 杭州微拍堂文化创意有限公司数据库负责人 田红阳 全品类新租赁平台——人人租机的上云案例 人人租机:依靠阿里小程序赋能,接入芝麻信用风控体系,风控效率大幅度提升且逾期率降低了10倍。上线至今,日订单量达到2000单,用户增长20倍,交易订单量增长15倍,实现了依托于APP和原有渠道三年都无法实现的增长规模。 【最佳实践】基于众多客户上云的成功案例萃取而成的最优化企业上云指导 电商网站业务安全 使用阿里云实现电商网站运营期间的安全防护,包括防爬风险管理、DDoS防御、风险管理产品的能力及操作相关产品:专有网络VPC、DDoS高防IP、负载均衡 SLB 互联网、电商行业实时大数据分析 使用阿里云服务实现电商网站购物数据实时分析后在大屏幕上展示,极大地增强数据的可读性相关产品:RDS、数据库备份、DataV数据可视化 小程序业务实时监控 使用ACK容器快速搭建小程序同时使用ARMS提升业务监控能力,实时监控小程序业务应用性能相关产品:对象存储OSS、容器服务ACK、ARMS 云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册