随笔--笔记1(数据筛选和pyecharts)

一、数据筛选

数据需求:筛选出销量大于500,业绩大于560,利润率大于30%,渠道是百度的所有产品
data数据就是产品销售明细表,包含上述所有列

  1. 直接Data Frame 反向索引
data1 = data[(data.销量 > 500) & (data.业绩 > 560) & (data.利润率 > 30%) & (data.渠道 == "百度")]

但有时候筛选条件很多的话表达式很长且不易阅读理解,便有了下面的query函数
2. df.query()

data1 = data.query('销量 > 500 & 业绩 > 560 & 利润率 > 30% & 渠道 == "百度"')

为了方便可以给每个条件加括号;需要注意的是,整个表达式用引号引起来(单双随意,这里用单是避免和后面的双引号冲突)

二、pyecharts作图

推荐两个很好的网址

  1. 官网 😵
  2. 大神的官网解读 😍

个人理解:🙏🙈🙏

1、基本作图语法
以条形图为例(链式编写,个人喜好)

# 导入模块
from pyecharts.commons.utils import JsCode # 
from pyecharts.globals import ThemeType # 导入主题,一般会自己设置背景以及图表颜色
import pyecharts.options as opts # 这个用于系统配置
from pyecharts.charts import * # 导入所有基础的图标
# 定义一些常量
# 这个是用于图形渐变的常量,固定的格式,用JsCode解析
area_color_js = (
    # 这四个位置分别是右、下、左、上,1代表从某个方位开始渐变,false 好像是是否开启渐变????
    "new echarts.graphic.LinearGradient(0, 0, 1, 1, "
    "[{offset: 0, color: '#fffbd5'}, {offset: 1, color: '#b6fbff'}], false)"
)


bar = (Bar(
			init_opts=opts.InitOpts(#width='400px',height='300px',
                        			page_title="What",bg_color='rgba(123, 200, 88, 0.4)',
                                    theme=t)
		)
	.add_xaxis(list[data.index]) # 画x轴以及添加数据
	.add_yaxis('',list[date[].valus) # 画y轴以及添加数据,y轴有两个必须参数,series_name,y_axis
									 # series_name:系列名称,用于legend 的图例筛选(相当于图例)。
           							 # y_axis:数据
	.add_yaxis('',list[date[].valus) # 可以有多个y轴
	.extend_axis() # 增加副坐标轴
	.set_global_opts() # 全局配置
	.set_series_opts() # 系列配置
	)
bar.render_notebook() # 这个是在jupyter notebook中显示绘图
bar.render() # 这个是把画图到处到指定文件夹中

在这里插入图片描述

以上是最基本的,各种设置都是空没配置,只是基本的图表
2、增加各种系统配置项和系列配置项

全局配置项就是对这个画板做配置
系列配置就是对单个图标或者单个图表中的某一项做配置

👇👇👇这几大模块都是全局配置
在这里插入图片描述
而这几个就是系列配置👉👉 字体样式、颜色、线图的标记、涟漪特效、区域填充等等等等,类似于单独图表中的各种花里胡哨的东西🙈🙈

全局配置

.set_global_opts(
						## 这个是标题配置项(主副标题、位置、字体样式(属于系列配置))
						title_opts=opts.TitleOpts(title="Theme-%s"%t,subtitle='度的%s'%t,
                                                  pos_left="center",pos_bottom="80%",
                                                  title_textstyle_opts=opts.TextStyleOpts(
                                                   color='red'),
                                                   subtitle_textstyle_opts=opts.TextStyleOpts(
                                                   color='Black')
                                                  ),
                         ## 图例配置项(是否显示,位置等)
                         legend_opts=opts.LegendOpts(is_show=True,pos_left="70%",pos_top="15%",
                                                    orient='vertical',padding=10,inactive_color='black',
                                                    textstyle_opts=opts.TextStyleOpts(color='white'),
                                                    legend_icon='circle'),
                         ## 这个是提示框配置项(显示、触发条件、触发样式等等)
                         tooltip_opts=opts.TooltipOpts(is_show=True,trigger_on='mousemove',
                                                      trigger='axis',axis_pointer_type="cross",
                                                      is_show_content=True,background_color="gray",
                                                      ),
                         yaxis_opts=opts.AxisOpts(name="销量",name_location='end',min_=0,max_=500,
                                                  name_textstyle_opts=opts.TextStyleOpts(color='red',
                                                                                        font_size=25),
                                                 axisline_opts=opts.AxisLineOpts(is_show=False,symbol='arrow'),
#                                                  axistick_opts=opts.AxisTickOpts(is_inside=True)
                                                 ),
#                          datazoom_opts=opts.DataZoomOpts(is_show=True,range_start=50, range_end=80),
						 ## 这个就是工具箱配置项(显示,显示哪一些等)
                         toolbox_opts=opts.ToolboxOpts(is_show=True)
                         
                         
                        )

这些配置完就是这样 👍👍👍👍👍
在这里插入图片描述

系列配置


.set_series_opts(
			# 这个是图表颜色,用JsCode解析的渐变,border_color:边界颜色,opacity: 透明度
            itemstyle_opts=opts.ItemStyleOpts(color=JsCode(area_color_js), opacity=0.5,
            								border_color='black'),
            ## 字体样式设置一般跟在有文字出现的地方,比如标题,图例,上面都有应用
            # 另外字体样式还有个富文本,可以使字体样式更加好看title_textstyle_opts=opts.TextStyleOpts(color='red',font_weight="lighter",font_size=30) 这是设置标题全局变量的应用
            ## 这是标签,就是图标上的数字
            label_opts=opts.LabelOpts(is_show=True,
                                               # 标签的位置。
                                               # 'top','left','right','bottom','inside','insideLeft','insideRight'
                                               # 'insideTop','insideBottom', 'insideTopLeft','insideBottomLeft'
                                               # 'insideTopRight','insideBottomRight'
                                               position='inside')
             ## 线样式配置项 LineStyleOpts,它一般跟在线型图的y轴配置中,如下
             ## .add_yaxis('默认线宽', y_data_2, linestyle_opts=opts.LineStyleOpts(width=1,
             #																type_='dotted',
             #																color='black',
             #																splitline_opts=opts.SplitLineOpts(is_show=True)
             #	这里是特殊值标记															)
             markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
                opts.MarkPointItem(type_="average", name="平均值"),
            ])
             #				)
            
            
       )

这里找了个富文本的应用

但是富文本应用和原Echarts相关,要用到JavaScript
富文本标签

# 富文本
rich_text = {
    "a": {"color": "#999", "lineHeight": 22, "align": "center"},
    "abg": {
        "backgroundColor": "#e3e3e3",
        "width": "100%",
        "align": "right",
        "height": 22,
        "borderRadius": [4, 4, 0, 0],
    },
    "hr": {
        "borderColor": "#aaa",
        "width": "100%",
        "borderWidth": 0.5,
        "height": 0,
    },
    "b": {"fontSize": 16, "lineHeight": 33},
    "per": {
        "color": "#eee",
        "backgroundColor": "#334455",
        "padding": [2, 4],
        "borderRadius": 2,
    },
}


# 虚假数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data = [123, 153, 89, 107, 98, 23]

pie = (Pie()
       .add('销售额', [list(z) for z in zip(cate, data)],
       # 标签有专门的内容格式器
       # 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。  
    # 模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。   
    # 在 trigger 为 'axis' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。   
    # 不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:  

    # 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)  
    # 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)  
    # 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)  
    # 饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)  
    # 示例:formatter: '{b}: {@score}' 
       label_opts=opts.LabelOpts(position='outsiede',
                     formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",
                     rich=rich_text))
       
       )

pie.render_notebook()

在这里插入图片描述
🕙🕙🕙🕙🕙🕙🕙🕙

肝不动了,头大,慢慢消化吧!!!

🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉🙉

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值