博文

目前显示的是 四月, 2023的博文

pyramid_chart解决中文乱码

library(tidyverse) library(lubridate) library(showtext) library(janitor) library(openxlsx) library(magrittr) library(hablar) library(readxl) library(ggcharts) showtext_auto(enable = TRUE) df <- readxl::read_excel('/mnt/c/users/xuefe/Downloads/grda_fnl_tj.xlsx',skip = 1) %>%    pivot_longer(cols=`0岁`:`100岁`,names_to = 'age',values_to = 'count') %>%    filter(单位=='合计' & age!='0岁')  %>%    mutate(age=str_remove_all(age,'岁')) %>%    convert(num(age)) df_m <- df %>%    mutate(age_group=cut(age, breaks =seq(0,110,by=3),include.lowest = F,right=T)) %>%    group_by(age_group) %>%    summarise(sumn=sum(count,na.rm = T)) %>%    mutate(sex='男性') # right=T 左开右闭 # rihht=F 左闭右开 p_1 <- ggplot(data = df_m) +   geom_bar(aes(age_group,sumn), fill = 'skyblue', stat="identity", position="dodge")+   xlab('年龄组') +   ylab('男性人口数')+   coord_flip()  df <- readxl::read_exce

Quarto使用docx支持中文

 --- title: "Test" format: docx editor: visual --- pdf需要指定中文字体,使用fc-list :lang=zh查看已安装的字体。 可以使用 --- title: "test" format: pdf editor: visual documentclass: scrreprt pdf-engine: xelatex CJKmainfont: WenQuanYi Micro Hei --- 这种方法因为仅指定一种字体, 效果不太美观。可以更换 其他方式 --- title: "测试" author: "李东风" date: "2023-04-26" lang: zh format:   html:     toc: true     toc-location: body     toc-depth: 3     number-sections: true     html-math-method: katex   docx:     toc: true     toc-depth: 3     number-sections: true   pdf:     documentclass: article     toc: true     toc-depth: 3     include-in-header:        text: |         \usepackage{ctex}         \usepackage{amsthm,mathrsfs} ---

在 Pandas DataFrame 中增加总计行(列)

  def add_total ( df , axis = 0 ):     """     在 Pandas DataFrame 中增加总计行(列)     参数:         df (pandas.DataFrame):需要增加总计行(列)的 DataFrame。         axis (int, optional): 0 表示对列进行求和,增加总计行;1 表示对行进行求和,增加总计列。默认为0。     抛出:         ValueError:如果 axis 参数不为 0 或 1,则报错。     返回:         pandas.DataFrame:增加了总计行(列)的新 DataFrame。     """     df = df .copy()     if axis == 0 :         df .loc[ 'Total' ] = df .sum( axis = 0 , numeric_only = True )     elif axis == 1 :         df [ 'Total' ] = df .sum( axis = 1 , numeric_only = True )     else :         raise ValueError ( 'axis parameter should be 0 or 1' )     return df # 0 增加1行对列进行求和,增加1 列对行进行求和 df = (     df . pipe ( add_total , axis = 1 ) )

pandas 合并列拆分列

  import pandas as pd import re df = (       pd . read_excel ( "/mnt/c/users/xuefe/Downloads/就诊统计.xlsx" , sheet_name = 3 )       . drop ([ 'Unnamed: 0' , 'Unnamed: 4' ], axis = 1 )       ) df [[ 'A' , 'B' , 'C' ]] = df [ '分类诊断名称' ]. str . split ( pat = '[;| |/|;|,|,|!|、|-|\.|?]' ,                                             n = 2 , expand = True ) # n=1 表示分割成2列,n=2 表示分割成3列。 # 当expand=True时,str.split()方法返回DataFrame,并将结果自动拆分为若干列作为新列。 # 当expand=False时,str.split()方法返回一个Series对象,每个元素是一个列表,其中的内容取决于拆分的结果。 df [[ 'A' , 'B' , 'C' ]] = df [ '分类诊断名称' ]. str . split ( pat = '[;| |/|;|,|,|!|、|-|\.|?]' ,                                             n = 2 , expand = True ) df = ( pd . read_excel ( "/mnt/c/users/xuefe/Downloads/就诊统计.xlsx" , sheet_name = 3 ) . drop ([ 'Unnamed: 0' , 'Unnamed: 4' ], axis = 1 ) . assign ( A = lambda x : x [ '分类诊断名称' ].str.sp

xx-net chatgpt 使用

import pandas as pd import numpy as np import openai import re import time # 查看宿主机IP # cat /etc/resolv.conf # 测试本地端口是否打开 # 配置中允许远程访问 # tcping 172.20.80.1 8085 # 防火墙新增8085端口的入站规则 # 认证API密钥 with open( '/etc/resolv.conf' ) as file:     resolv_conf_data = file.read() ip_regex = r '\b(?:\d {1,3} \.) {3} \d {1,3} \b' host_ip=re.search(ip_regex, resolv_conf_data).group( 0 ) openai.api_key = "abc" # openai.api_base = "http://172.20.80.1:8085/openai/v1" openai.api_base = f "http:// {host_ip} :8085/openai/v1" completion = openai.ChatCompletion.create(     model= "gpt-3.5-turbo" ,     messages=[{ "role" : "user" , "content" : "感冒最可能的ICD10的诊断编码" }]) print(completion.choices[ 0 ].message.content)

openai

 import pandas as pd import numpy as np import openai import re import time df=(     pd.read_excel(r"/mnt/d/df2.xlsx",sheet_name=0) ) # 认证API密钥 openai.api_key = "sk-" result=[] for i in df.A[100:]:     time.sleep(1)     completion = openai.ChatCompletion.create(model="gpt-3.5-turbo",                                               messages=[{"role": "user", "content": f"{i}最可能的ICD10的诊断编码"}])     result.append([i,completion.choices[0].message.content])      jb = (       pd.DataFrame(result,columns=['name', 'zhenduan'])       .assign(icd=lambda x:x.zhenduan.str.extract(r'([A-Z]\d{2})'))       ) (      df.merge(jb,how='left',left_on='A',right_on='name')      .to_excel('/mnt/d/month2_1.xlsx') ) icd=(      pd.read_excel('/mnt/d/3位代码类目表(ICD-10).xls')  ) month1=(      pd.read_excel('/mnt/d/month2.xlsx')      .merge(icd,how='left',left_on='icd&

Code Runner 配置

  配置Code Runner的Executor Map,实现自动读取当前环境下的Python解释器位置 Executor Map的值控制各种类型的脚本与其解释器的对应关系。默认情况下, code-runner.executorMap.python="python" 即调用当前默认python解释器,忽略项目配置文件中的配置。 将其改为 "python": "\"$pythonPath\" -u $fullFileName", 可以自动读取当前目录下的python解释器路径配置。

2列的乘积,进行分组求sum

 #2列的乘积,进行分组求sum (     kc     .astype({'ym_yxq':'datetime64[ns]'})     .query("ym_yxq>'2023-04-18'")     .groupby(['ym_mc','sccj_mc'])     .agg(kc=('kcsl',np.sum),kc2=('kcsl',lambda x:np.sum(x*kc.ymgg_bm)))     .to_excel('/mnt/c/users/xuefeng/downloads/jieguo2.xlsx') )

按zjhm分组后,选择接种时间大于发病日期的病例,选择指定的列

 #按zjhm分组后,选择接种时间大于发病日期的病例,选择指定的列 test2=(     test     .astype({'jz_sj':'datetime64[ns]','发病日期':'datetime64[ns]'})     .groupby(['zjhm'])     .filter(lambda x: (x.jz_sj>x.发病日期).all())     .loc[:,['患者姓名', 'zjhm', 'jz_sj', '发病日期']] )

出生队列接种率不合格乡镇率

 import math import pandas as pd import numpy as np import janitor import oracledb shi_bm=pd.DataFrame.from_dict({'地区名称': {0: '兰州市',           1: '嘉峪关市',           2: '金昌市',           3: '白银市',           4: '天水市',           5: '武威市',           6: '张掖市',           7: '平凉市',           8: '酒泉市',           9: '庆阳市',           10: '定西市',           11: '陇南市',           12: '临夏回族自治州',           13: '甘南藏族自治州',           14: '兰州新区'},          '地区编码': {0: 6201,           1: 6202,           2: 6203,           3: 6204,           4: 6205,           5: 6206,           6: 6207,           7: 6208,           8: 6209,           9: 6210,           10: 6211,           11: 6212,           12: 6229,           13: 6230,           14: 6232}} ).astype({'地区编码':'str'}) xian_bm=pd.DataFrame.from_dict({'地区名称': {1: '城关区',   37: '七里河区',   73:

Spyder accept Chinese input with wsl

1 、sudo apt install fonts-wqy-zenhei libxcursor-dev alsa libegl1-mesa libegl1 2 、conda install -c conda-forge fcitx-qt5 3、vim ~/.bashc export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=1 4、spyder Tools->Preferences-> Appearance -> Fonts Rich text WenQuanYi Zen Hei