【Python小笔记】零碎同步

news2024/12/26 4:01:22

1.多字段连接,连接字段名不一致–left_on\right_on对应列示后可匹配

import pandas as pd
df_A1=pd.read_excel('E:\Mercy\data\mytest\A.xlsx',sheet_name=0)
df_A2=pd.read_excel('E:\Mercy\data\mytest\A.xlsx',sheet_name=1)
df_A=df_A1.merge(right=df_A2,how='left',left_on=['公司名','业务主体'],right_on=['公司名','业务线'])
df_A
公司名业务主体业务线金额
0南京成长成长1
1天津成长成长2
2北京成长成长3
3南京育儿育儿4

2.merge一对多left–效果同sql里的left join

(一侧或被多侧重复,右侧会被左侧剔除)

import pandas as pd
df_A2=pd.read_excel('E:\Mercy\data\mytest\A.xlsx',sheet_name=1)
df_A3=pd.read_excel('E:\Mercy\data\mytest\A.xlsx',sheet_name=2)
df_A22=df_A2.iloc[:,[0,2]]
df_A3.merge(df_A22,how='right',on='公司名')
公司名金额
0南京1
1南京4
2天津2
3北京3

3.xlsxwriter写入excel文本和图片

import pandas as pd
import  xlsxwriter  as xlsx 
#读取/创建文件
year_month=input('请输入计算期年月(YYYY_MM):')
book=xlsx.Workbook('E:\\Mercy\\data\\mytest\\'+year_month+'测试.xlsx')
#添加工作表
sheet=book.add_worksheet('demo')

#输入文本
pm = {
    'bold' : True,
    'font_name' : '微软雅黑',
    'color':'red'
}
formate = book.add_format(pm)
amount=56
sheet.write('A1','实际支付金额:'+str(amount),formate)

#循环输入dataframe
numform_int= book.add_format({'num_format': '0'}) 
df_A2=pd.read_excel('E:\Mercy\data\mytest\A.xlsx',sheet_name=1)
rown=9
for index, row in df_A2.iterrows():
    #sheet.write_string(rown,6,index)
    sheet.write_string(rown,0,row[df_A2.columns[0]])
    sheet.write_string(rown,1,row[df_A2.columns[1]])
    sheet.write_number(rown,2,row[df_A2.columns[2]],numform_int)
    rown +=1
    
#输入图表
import matplotlib.pyplot as plt
import numpy as np
from io import BytesIO
##绘制图表
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x))
##接收io流
imagedata=BytesIO()
plt.savefig(imagedata)
##插入图片
sheet.insert_image(0,0,'',{"image_data": imagedata})#在0行0列插入

book.close()
请输入计算期年月(YYYY_MM):20

在这里插入图片描述

4.读取模糊文件名

import sys
import re
import pandas as pd
import os

pat=re.compile('全渠道.*?')
for file_name in os.listdir('E:\Mercy\data\public'):
    if re.match(pat,file_name):
        depart_path='E:\Mercy\data\public\\'+file_name
df_depart=pd.read_excel(depart_path,sheet_name='门店名称匹配',header=1) 
df_depart=df_depart.drop('数值',axis=1)
df_depart.rename(columns={'文本':'门店'},inplace=True)
df_depart['门店']=df_depart['门店'].apply(lambda x:str(x))
df_depart.info()
    #df_depart.to_excel('E:\Mercy\data\public\名店名称匹配.xlsx',index=False)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 445 entries, 0 to 444
Data columns (total 17 columns):
 #   Column   Non-Null Count  Dtype         
---  ------   --------------  -----         
 0   门店       445 non-null    object        
 1   管报名称     445 non-null    object        
 2   BI名称     445 non-null    object        
 3   会员KPI名称  445 non-null    object        
 4   分部       445 non-null    object        
 5   地级市      444 non-null    object        
 6   城市等级     444 non-null    object        
 7   店总       444 non-null    object        
 8   开店日期     445 non-null    datetime64[ns]
 9   开店日期.1   445 non-null    object        
 10  年级       445 non-null    object        
 11  规模店      444 non-null    object        
 12  物业类型     419 non-null    object        
 13  属性       444 non-null    object        
 14  计租方式     346 non-null    object        
 15  使用面积     431 non-null    float64       
 16  面积划分     385 non-null    object        
dtypes: datetime64[ns](1), float64(1), object(15)
memory usage: 59.2+ KB

5.一串字符串是否包含某些关键词的任意一个any|全部all

ls1='服务-在线教育-家庭教育-能力启蒙;服务-在线教育-家庭教育-性格培养;服务-在线教育-家庭教育-亲子成长;服务-教育培训-早教-早教中心;'
ls2='服务-才艺运动-运动-篮球;'
ls3='服务-在线教育-家庭教育-能力启蒙;服务-在线教育-家庭教育-性格培养;'
kwl=['性格培养','亲子成长']
kw='性格培养'
#多个
any(kw in ls3 for kw in kwl)
all(kw in ls3 for kw in kwl)
#单个
kw in ls1
ls2.find(kw)>-1
-1
for i in range(len(df_guiderule)):
    print('.*'+df_guiderule.iloc[i,0]+'.*',df_guiderule.iloc[i,1])

6.找到文件夹下最新文件

import os


# 输入目录路径,输出最新文件完整路径
def find_new_file(dir):
    '''查找目录下最新的文件'''
    file_lists = os.listdir(dir)
    file_lists.sort(key=lambda fn: os.path.getmtime(dir + "\\" + fn)
                    if not os.path.isdir(dir + "\\" + fn) else 0)
    print('最新的文件为: ' + file_lists[-1])
    file = os.path.join(dir, file_lists[-1])
    print('完整路径:', file)
    return file

# 函数调用

dir=r'E:\WXWork\1688853870925791\WeDrive\孩子王\战略支持-数字化分析\1、制度流程规则\门店信息表'
find_new_file(dir)

7.解决pandas to_excel覆盖原sheet

## topath文件Sheet1有内容,新内容保存到Sheet2后原来的内容消失
from openpyxl import load_workbook
import pandas as pd
topath='E:\Mercy\data\public\门店test.xlsx'
depart_path='E:\Mercy\data\public\门店名称匹配.xlsx'

df_prov=pd.read_excel(depart_path,sheet_name='分部汇总',header=0,usecols='A:D,F:K',nrows=22)
df_prov.to_excel(topath,sheet_name='Sheet2',index=False)
from openpyxl import load_workbook
import pandas as pd
topath='E:\Mercy\data\public\门店test.xlsx'
depart_path='E:\Mercy\data\public\门店名称匹配.xlsx'

target_writer = pd.ExcelWriter(topath, engine='openpyxl')#生成一个ExcelWriter对象
book = load_workbook(target_writer.path)#记录下这个Excel文件的原有sheet
target_writer.book = book#在要写入的ExcelWriter中填充之前记录的sheet
df_prov=pd.read_excel(depart_path,sheet_name='分部汇总',header=0,usecols='A:D,F:K',nrows=22)#要保存的新内容
df_prov.to_excel(excel_writer=target_writer,sheet_name='Sheet2',index=False)#保存目标是target_writer,而非路径
target_writer.save()
target_writer.close()

8.制作词云

filename = 'E:\Mercy\data\mytest\wordcloudtest.txt'
with open(filename, encoding='utf-8') as f:
    text = f.read()
#导入中文分词工具
import jieba
#切分文本字符串
jieba.setLogLevel(jieba.logging.INFO)
text = jieba.cut(text)
#以空格为单位分隔
#text = " ".join(text)
text
<generator object Tokenizer.cut at 0x0000018F0935EF90>
stopword=['的','是']
stayed_line = ""
for te in text:
    if te not in stopword:
        stayed_line +=te+" "
        
#导入imageio库
import imageio
#调用imread函数来读取本地图片以设置词云形状
graph = imageio.imread("E:\Mercy\data\mytest\star.png")

'''
import numpy as np
from PIL import Image
image = Image.open(r'E:\Mercy\data\mytest\star.png')
graph = np.array(image)'''
"\nimport numpy as np\nfrom PIL import Image\nimage = Image.open(r'E:\\Mercy\\data\\mytest\\star.png')\ngraph = np.array(image)"
from wordcloud import WordCloud

wc = WordCloud(font_path="C:\Windows\Fonts\STHUPO.TTF",background_color="white", max_words=1600, mask=graph, contour_width=0, contour_color='steelblue').generate(stayed_line)
#导入python默认的绘图工具
import matplotlib.pyplot as plt  #绘图
plt.imshow(wc, interpolation="bilinear")#显示图形
plt.axis("off")#隐藏坐标轴

# 将词云图导出到当前目录
wc.to_file(r'E:\Mercy\data\mytest\wc_cn.png')
<wordcloud.wordcloud.WordCloud at 0x18f08300520>

在这里插入图片描述

读取db文件

import sqlite3

#连接
conn=sqlite3.connect('message.db')
c=conn.cursor()
#看一看DB文件里有哪些表
tables=c.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
print(tables)
[]
#正常执行SQL查询
c.execute("select * from table").fetchall()

#关闭
c.close()
conn.close()
---------------------------------------------------------------------------

OperationalError                          Traceback (most recent call last)

<ipython-input-7-e4488a0f934e> in <module>
      1 #正常执行SQL查询
----> 2 c.execute("select * from table").fetchall()
      3 
      4 #关闭
      5 c.close()


OperationalError: near "table": syntax error

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

P1775 石子合并(弱化版)(内附封面)

石子合并&#xff08;弱化版&#xff09; 题目描述 设有 N ( N ≤ 300 ) N(N \le 300) N(N≤300) 堆石子排成一排&#xff0c;其编号为 1 , 2 , 3 , ⋯ , N 1,2,3,\cdots,N 1,2,3,⋯,N。每堆石子有一定的质量 m i ( m i ≤ 1000 ) m_i\ (m_i \le 1000) mi​ (mi​≤1000)。…

信号执行流程

信号执行是一种用户态与内核态和来回切换&#xff0c;进程不会一接收到信号&#xff0c;就立刻执行&#xff0c;而是在合适的时候执行信号&#xff0c;&#xff08;手头有重要的事情等等再说。 一般来说都是在从内核态返回用户态的时候检测是否有可执行的信号&#xff08;可执…

超详细|ChatGPT辅助论文降重教程100%降至13%

本文讲述使用ChatGPT对论文进行辅助降重&#xff0c;鼓励大家解放大脑&#xff0c;多思考核心论点 祝看到本教程的小伙伴们都完成论文&#xff0c;顺利毕业。 可以加QQ群交流&#xff0c;一群&#xff1a; 123589938 第一章 ChatGPT指令 1.1 同义词替换 对比分析&#xff0c;…

【MySQL】删除重复数据,先进先删

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…

C语言之结构体篇(简)

结构体 结构体的认知结构体的声明一般声明特殊声明匿名结构体类型 结构体自引用结构体变量的定义与初始化结构体变量的定义结构体变量的初始化 结构体传参结构体内存对齐位段位段声明位段的内存分配位段跨平台问题: 结构体是由我们自己创造的一种类型&#xff0c;使得C语言有能…

kafka权威指南(阅读摘录)

零复制 Kafka 使用零复制技术向客户端发送消息——也就是说&#xff0c;Kafka 直接把消息从文件&#xff08;或者更确切地说是 Linux 文件系统缓存&#xff09;里发送到网络通道&#xff0c;而不需要经过任何中间缓冲区。这是 Kafka 与其他大部分数据库系统不一样的地方&#…

归并排序——“数据结构与算法”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容仍然是数据结构与算法专栏的排序呀&#xff0c;下面&#xff0c;让我们进入归并排序的世界吧&#xff01;&#xff01;&#xff01; 归并排序 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种…

[腾讯云 Cloud studio 实战训练营] 制作Scrapy Demo爬取起点网月票榜小说数据

首语 最近接触到了一个关于云开发的IDE&#xff0c;什么意思呢&#xff1f; 就是我们通常开发不是在电脑上吗&#xff0c;既要下载编译器&#xff0c;还要下载合适的编辑器&#xff0c;有的时候甚至还需要配置开发环境&#xff0c;有些繁琐。而这个云开发的IDE就是只需要一台…

“苏豪 x 莱佛士”再度携手,惊艳亮相上海发型师节!

2023年6月28日&#xff0c;以“为爱启航”为主题的第16届AHF亚洲发型师节在上海跨国采购中心盛大开幕。继上次在施华蔻专业2023春夏新季风发布会上&#xff0c;苏豪x莱佛士合作的大秀&#xff0c;赢得了现场观众阵阵掌声。这次“Kraemer苏豪x莱佛士”再度携手&#xff0c;惊艳亮…

PoseiSwap:基于 Nautilus Chain ,构建全新价值体系

在 DeFi Summer 后&#xff0c;以太坊自身的弊端不断凸显&#xff0c;而以 Layer2 的方式为其扩容成为了行业很长一段时间的叙事方向之一。虽然以太坊已经顺利的从 PoW 的 1.0 迈向了 PoS 的 2.0 时代&#xff0c;但以太坊创始人 Vitalik Buterin 表示&#xff0c; Layer2 未来…

MySQL常见问题处理(三)

MySQL 常见问题解决 夕阳留恋的不是黄昏&#xff0c;而是朝阳 上一章简单介绍了MySQL数据库安装(二), 如果没有看过, 请观看上一章 一. root 用户密码忘记&#xff0c;进行重置操作 复制内容来源链接: https://blog.csdn.net/weixin_48927364/article/details/123556927 一.…

【MFC]实现16进制文件浏览器-详细步骤+代码

学习MFC已经两天了&#xff0c;我们来写一个小项目&#xff1a;16进制文件浏览器&#xff0c;简单实现&#xff0c;因为我们MFC学的还不是很透彻&#xff0c;这里会给出详细的每一个步骤&#xff0c;并且详细解释每一个方法&#xff1a; 文章目录 提前了解步骤&#xff1a;基本…

Apache poi 对单元格进行合并

需求背景: 在导出excel时, 需要对内容相同的单元格进行纵向合并 期望达到的效果: poi 实现合并单元格的方法 sheet.addMergedRegion(new CellRangeAddress(开始行, 结束行, 开始列, 结束列)); 个人的实现思路: 1): 举个列子, 就拿截图贴出的 [公司类别] 这一列来进行说明 …

【QT学习】01:helloqt

helloqt OVERVIEW helloqt一、helloqt1.使用向导创建2.手动创建3.pro文件4.Qt应用程序框架 二、按钮创建main.cppmywidget.cpp 三、对象模型1.对象树引入2.存在的问题 一、helloqt 创建一个qt项目&#xff0c;可以使用creator的向导创建&#xff0c;也可自己手动创建&#xff…

企业如何搭建矩阵内容,才能真正实现目的?

当下&#xff0c;新媒体矩阵营销已成为众多企业的营销选择之一&#xff0c;各企业可以通过新媒体矩阵实现扩大品牌声量、维持用户关系、提高销售业绩等不同的目的。 而不同目的的矩阵&#xff0c;它的内容运营模式会稍有差别&#xff0c;评价体系也会大不相同。 企业在运营某类…

性能优化-react路由懒加载和组件懒加载

背景 随着项目越来越大&#xff0c;打包后的包体积也越来越大&#xff0c;严重影响了首屏加载速度&#xff0c;需要对路由和组件做懒加载处理 主要用到了react中的lazy和Suspense。 废话不多说&#xff0c;直接上干货 路由懒加载 核心代码 import React, { lazy, Suspens…

精准感知+高效预判——城市“听诊器”防水患于未然

近期&#xff0c;全国多地遭遇暴雨猛袭&#xff0c;引发城市积涝&#xff0c;更有台风“杜苏芮”登陆后引发沿海内陆极端降水&#xff0c;各地排水防涝工作面临严峻考验。 快速定位城市排水管网系统的管道淤堵点&#xff0c;对河道水位、雨量情况、污水厂进水流量以及泵站运行情…

【云原生K8s】二进制部署单master K8s+etcd集群

一、实验设计 mater节点master01192.168.190.10kube-apiserver kube-controller-manager kube-scheduler etcd node节点node01192.168.190.20kubelet kube-proxy docker (容…

HTTP(超文本传输协议)学习

关于HTTP补学 一、HTTP能干什么 通过下图能够直观的看出&#xff1a;“交换数据 ” 二、HTTP请求例子 一个 HTTP 方法&#xff0c;通常是由一个动词&#xff0c;像 GET、POST 等&#xff0c;或者一个名词&#xff0c;像 OPTIONS、HEAD 等&#xff0c;来定义客户端执行的动作。…

Centos7.x修改密码

Centos7.x修改密码 root修改自己的密码 云服务器 云服务器则直接在控制台修改(例如阿里云服务器直接在阿里云服务器控制台修改&#xff0c;不赘述)命令行方式: 命令行输入: passwd 再两次输入新密码 root修改普通用户的密码 命令行方式: passwd 用户名再输入新的密码 普…