pandas环比和同比分析

import pandas as pd
import random

date_M = list(pd.date_range('1/1/2019', periods=24, freq='M')) #生成日期
mony = [random.randint(18000,20000) for i in range(0,24)] #随机生成销售额
data = pd.DataFrame({'date_M':date_M,'mony':mony}) #构建一个dataframe
data['huanbi_03'] = data.mony.pct_change()
data.fillna(0,inplace=True) #Null值填充
print(data)
第一步:生成测试数据

#生成测试数据
import pandas as pd
import random

date_M = list(pd.date_range('1/1/2019', periods=24, freq='M')) #生成日期
mony = [random.randint(18000,20000) for i in range(0,24)] #随机生成销售额
data = pd.DataFrame({'date_M':date_M,'mony':mony}) #构建一个dataframe
第二步:计算环比增长

这里有三个方法,我们逐一介绍。

----------------------------------------------------------
#方法1
----------------------------------------------------------
'''
 #升序排列-按照日期
data.sort_values(by=['date_M'],inplace=True)

 #新增列 -'huanbi' 环比的意思
data['huanbi_01']=0

#计算环比列数值
for i in range(0,len(data)):
    if i == 0:
        data['huanbi_01'][i] = 'null'
    else:
        data['huanbi_01'][i] = format((data['mony'][i] - data['mony'][i-1])/data['mony'][i-1],'.2%')
        #format(res,'.2%') 小数格式化为百分数
'''
----------------------------------------------------------
#方法2:
使用diff(periods=1, axis=0)) 一阶差分函数
periods:移动的幅度 默认值为1
axis:移动的方向,{0 or ‘index’, 1 or ‘columns’},如果为0或者’index’,则上下移动,如果为1或者’columns’,则左右移动。默认列向移动
----------------------------------------------------------
'''
data['huanbi_02'] = data['mony']/(data['mony']-data['mony'].diff())-1

data.fillna(0,inplace=True) #Null值填充

'''
----------------------------------------------------------
#方法3:
使用pct_change()
----------------------------------------------------------
'''
data['huanbi_03'] = data.mony.pct_change()

data.fillna(0,inplace=True) #Null值填充

实时变化的流程图-streamlit系列

实时变化的流程图

import streamlit as st
import graphviz

if 'num' not in st.session_state:
    st.session_state.num = "1"

def update2():
    st.session_state.num = "2"

def update3():
    st.session_state.num = "3"

st.write(st.session_state.num)
st.button("Perform calculation 2", on_click=update2, key='key_2')
st.button("Perform calculation 3", on_click=update3, key='key_3')

graph= graphviz.Digraph(graph_attr={'rankdir':'LR'})
graph.edge(f'3', '12 ', label='3*4')
graph.edge(f'4', '12 ', label='4*3')
graph.edge('12 ', '12', label='max(0,12)')
graph.edge('12', '60', label='12*5')
graph.edge(st.session_state.num, '60', label='5*12')
graph.edge('60', '1600', label='(100 - 60)**2')

#red arrows

graph.edge('1600', '60', label='2*(100 - 60)=80', color='red')
graph.edge('60', '12', label='5*80=400', color='red',)
graph.edge('60', st.session_state.num, label='12*80=960', color='red')
graph.edge('12', '12 ', label='1*400=400', color='red')
graph.edge('12 ', '3', label='400*4=1600', color='red')
graph.edge('12 ', '4', label='400*3=1200', color='red')

st.graphviz_chart(graph)

销售查询

from streamlit_option_menu import option_menu
import pandas as pd
import streamlit as st
from st_aggrid import AgGrid
from st_aggrid.grid_options_builder import GridOptionsBuilder
from st_aggrid.shared import ColumnsAutoSizeMode
from st_aggrid import GridOptionsBuilder, AgGrid, GridUpdateMode
import streamlit.components.v1 as components

custom_css = {
    ".ag-row-hover": {"background-color": "#98FB98 !important"},
    ".ag-row-odd": {"background-color": "#FFF8DC"},
    ".ag-row-even": {"background-color": "#D2B48C"},
    ".ag-root-wrapper": {"border": "3px solid #98FB98"},
    ".ag-header": {"background-color": "#2c2d30"},
    ".ag-status-bar": {"background-color": "#232323"},
    ".ag-right-cols-container": {"background-color": "#98FB98"},
    ".ag-side-buttons": {"background-color": "#2c2d30"},
    ".ag-paging-panel": {"background-color": "#98FB98"},
    ".ag-root": {"background-color": "#98FB98"},
    ".ag-cell-focus .ag-cell-value": {"background-color": "#4895ef !important"},
    ".ag-root": {"background-color": "#98FB98"},
    ".ag-cell-focus .ag-cell-value": {"background-color": "#4895ef !important"},
    ".ag-row-selected": {"color": "#4895ef !important"},
    ".ag-theme-streamlit": {'transform': "scale(0.8)", "transform-origin": '0 0'}
}

components.iframe("https://www.mixdiy.com/",650,800)


df = pd.read_excel(r"C:\Users\1\Downloads\ab.xls")

#gb = GridOptionsBuilder.from_dataframe(df, min_column_width=100)
#AgGrid(df, gridOptions=gb.build(), fit_columns_on_grid_load=True)

other_options = {'suppressColumnVirtualisation': True}
gb = GridOptionsBuilder.from_dataframe(df)
gb.configure_pagination(paginationAutoPageSize=True)
gb.configure_grid_options(**other_options)
gridOptions = gb.build()
AgGrid(df,gridOptions,columns_auto_size_mode=ColumnsAutoSizeMode.FIT_CONTENTS,custom_css=custom_css)
hide_streamlit_style = """
                        <style>
                        #MainMenu {visibility: hidden;}
                        footer {visibility: hidden;}
                        </style>
"""
st.markdown(hide_streamlit_style, unsafe_allow_html=True)

密码保护:exc

此内容受密码保护。如需查阅,请在下列字段中输入您的密码。

适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法

WSL2: Temporary Failure in Name Resolution

In WSL2, run:

登录后复制 
# remove existing resolv.conf symlink that is pointing to a wrong nameserver
sudo rm /etc/resolv.conf
# create a new resolv.conf with a correct nameserver
sudo bash -c 'echo "nameserver 1.1.1.1" > /etc/resolv.conf'
# stop wsl from regenerating resolv.conf symlink
sudo bash -c 'printf "[network]\ngenerateResolvConf = false" > /etc/wsl.conf'
# make current resolv.conf immutable so that wsl does not delete it
sudo chattr +i /etc/resolv.conf



In powershell, run

wsl --shutdown
wsl
出现问题No module named pip的解决
sudo apt update
sudo apt upgrade -y
sudo apt install --fix-missing python3-pip

streamlit运行参数

streamlit run app.py --server.port 80

以上以80端口运行

import numpy as np
import pandas as pd
import streamlit as st
x = st.slider("选择一个数字", 0, 100)
st.write(x, "的平方是", x * x)

chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns = ['a', 'b', 'c'])

st.area_chart(chart_data)

hide_streamlit_style = """
<style>
#MainMenu {visibility: hidden;}
footer {visibility: hidden;}
</style>
"""
st.markdown(hide_streamlit_style, unsafe_allow_html=True)

以上代码隐藏了streamlit的logo