例子1:【一行代码修改字典键值的方法】

修改字典中的“xidu”的键值为“西毒”:

names={'东邪':'黄药师','xidu':'欧阳锋','南帝':'段智兴','北丐':'洪七公','中神通':'王重阳'}
print(names)names['西毒']=names.pop('xidu')  #names[新键]=names.pop[旧键],字典的pop方法在删除元素的同事,会返回该元素的值。
print(names)

执行结果:

{‘东邪’: ‘黄药师’, ‘xidu’: ‘欧阳锋’, ‘南帝’: ‘段智兴’, ‘北丐’: ‘洪七公’, ‘中神通’: ‘王重阳’}
{‘东邪’: ‘黄药师’, ‘南帝’: ‘段智兴’, ‘北丐’: ‘洪七公’, ‘中神通’: ‘王重阳’, ‘西毒’: ‘欧阳锋’}

例子2:【字典和列表混合使用】

根据诗句猜对应的作者

import randomhaoshi=[{'题目':'白日依山尽,黄河入海流','作者':'王之涣','难度':'0.5','出题':'张老师'},{'题目':'会当凌绝顶,一览众山小','作者':'杜甫','难度':'0.6','出题':'啊老师',}]zuozhe=''while zuozhe != '不猜了':i=random.randint(0,1)print("这道题的难度系数是",haoshi[i]['难度'])zuozhe=input('题目是:'+haoshi[i]['题目']+'请输入诗的作者:')if zuozhe==haoshi[i]['作者']:print('恭喜你,答对了')elif zuozhe=='不猜了':print('你又懒了')breakelse:print('脑子不行哦')

执行结果:

这道题的难度系数是 0.5
题目是:白日依山尽,黄河入海流请输入诗的作者:王之涣
恭喜你,答对了
这道题的难度系数是 0.6
题目是:会当凌绝顶,一览众山小请输入诗的作者:不猜了
脑子不行哦

例子3:操作EXCEL

读取当天股市行情,并写入EXCEL保存。

import xlwings
import tushare as ts#取得最新交易数据,并赋值给x
x=ts.get_today_all()#创建新工作簿,并将x写入第一张工作表
app=xlwings.App() #打开app
wb=app.books.add() #创建工作簿
ws=wb.sheets[0]   #选择第一个sheet
ws.range('B2').value=x  #第一个sheet中的B2中赋值为X#保存工作簿到1.xlsx,软后关闭窗口并退出excel
wb.save(r'C:\Users\14031\Documents\pydemo\1.xlsx')
wb.close()
app.quit()

执行结果:

例子4:使用字典统计词频

统计文章中的词频:

words={'掉马':0,'媳妇':0,"老公":0,'时候':0}#打开文件,并赋值给all
all=open(r'C:\Users\14031\Documents\pydemo\掉马后,我成了顶流.txt','r')
all_lines=all.readlines() #读取打开文件的内容到all_linesfor line in all_lines:  #逐行读取文章for word in words:  #逐个读取wrods字典的键#“掉马”的值(初始为0)=“掉马”的值(初始为0)+ 本次line中“掉马”的出现的次数words[word]=words[word]+line.count(word)
print(words)for k in words:print(k,' 出现了',words[k],'次\n')all.close() #关闭文件

执行结果:

{‘掉马’: 4, ‘媳妇’: 6, ‘老公’: 13, ‘的’: 9384}

例子5:读取目录下所有的文件

打开目录中excle并显示文件中指定位置的值

import os
import xlwingsex_app= xlwings.App()  #打开excel程序#打开某个目录,walk遍历该目录下的文件,并存入变量。每个元素分三部分:路径、子文件夹、文件名
for a,b,c in os.walk(r'C:\Users\14031\Documents\pydemo'):print(a,b,c)for i in c: #C为所有文件名if i[-4:].lower()=='.xls': #当最后四位为‘.xls’时  ,lower转换为小写ex_bk=ex_app.books.open(a+'/'+i) #a和c拼接文件名和文件路径,打开该文件ex_st=ex_bk.sheets['Sheet1']  #定位到这个文件中的sheet表,名称为‘Sheet1’print(ex_st.range('A2').value) #读取该表中A2位置的值并打印ex_app.quit() #退出excel程序

执行结果:

C:\Users\14031\Documents\pydemo ['f1'] ['1.xlsx', 'excel.xlsx', 'result.txt', 'words.txt', '房屋来帐.xls', '掉马后,我成了顶流.txt']
A1的值
C:\Users\14031\Documents\pydemo\f1 [] ['2.xlsx']

例子6:matplotlib:以图表形式显示内容

显示横坐标为姓名,纵坐标为战斗力。

import  matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['fangsong']  #展示图标中的中文字符显示为仿宋。(不设置无法显示)姓名=['Lily','Anne','Jason'] #横坐标
战斗力=[50,89,125] #纵坐标size=[] #定义空列表,用于后面图标中显示每个点的大小#根据战斗力调整途中点的大小,使用途中的公式主要为了更明显的显示各个点的大小(非必须步骤)
for i in 战斗力:i=i*i/10size.append(i)plt.grid() #显示网格
plt.scatter(姓名,战斗力,s=size,c='r') #scatter是点状图,参数为横坐标、纵坐标,大小,颜色。
plt.xlabel("体重")  #横坐标显示标题
plt.ylabel("战斗力")  #纵坐标显示标题
plt.show()  #重要的步骤,展示以上所有的配置,没有这一步,就不会显示图标

执行结果:

例子7:通过集合运算,对Excel中读取的数据进行比较,并将值写入保存。

如下图,通过3月和四月的员工在岗名单,统计出离职员工、新进员工和老员工,并写入到文件中指定位置。

import xlwings as xw#打开excel程序
#打开员工名单文件
#打开第一个sheets
app=xw.App()
wb=app.books.open(r'C:\Users\14031\Documents\pydemo\员工名单.xlsx')
ws=wb.sheets[0]#读取从A4单元格开始到A100的值,存到san
#读取从B4单元格开始到B100的值,存到si
san=ws.range('A4:A100').value
si=ws.range('B4:B100').value#将3月和4月的人员名单转变为集合,再进行集合的运算
lizhi=set(san)-set(si) #三月减去四月的,算出三月有但是四月没有的人
xinjin=set(si)-set(san)  #四月有但是三月没有的人
laoyuangong=set(san)&set(si)  #三月和四月都在的人#当需要把内容写入到EXCEL中时,需要转换为列表。
#从E2开始写入,默认会是横向以行来写入,使用options(transpose=True)将行列转置,以列的方式写入
ws.range('E2').options(transpose=True).value=list(lizhi)
ws.range('F2').options(transpose=True).value=list(xinjin)
ws.range('G2').options(transpose=True).value=list(laoyuangong)#写完之后保存,如果没有上面的写入动作,可以不用保存。需要另存为的话,括号内写另存为的文件URL。
wb.save()
wb.close() #关闭books
app.quit() #退出exce程序

执行结果:

例子8:Counter统计出勤次数

内置模块collections.Counter

请使用Counter完成以下统计工作,并将结果print到屏幕上:
(1)统计第一周每个人的出勤次数,以字典形式打印在屏幕上;
(2)统计刘八在第一周、第二周和第三周分别出勤几次,把三个数字打印在屏幕上;
(3)统计每个人在三周里的总出勤次数,即每周出勤次数之和;
(4)统计第三周比第二周出勤更多的人员名单,比如刘八在第三周出勤5次,而在第二周只出勤2次,所以应当显示在屏幕上。

import xlwings as xw
from collections import Counter#打开excel
app=xw.App()
wb=app.books.open(r'C:\Users\14031\Documents\pydemo\某企业考勤记录文件.xlsx')
ws=wb.sheets[0]#读取三列数据
one=ws.range('B3:B30').value
two=ws.range('C3:C30').value
three=ws.range('D3:D29').value#通过Couter统计次数
C1=Counter(one)
C2=Counter(two)
C3=Counter(three)#计第一周每个人的出勤次数,以字典形式打印在屏幕上;
print("第一周每个人出勤次数",C1)#统计刘八在第一周、第二周和第三周分别出勤几次,把三个数字打印在屏幕上;
print('第一周刘八出现了:',C1['刘八'],'次')
print('第二周刘八出现了:',C2['刘八'],'次')
print('第三周刘八出现了:',C3['刘八'],'次')#统计每个人在三周里的总出勤次数,即每周出勤次数之和
print('连续三周每个人的合计出勤次数为:',C1+C2+C3)#统计第三周比第二周出勤更多的人员名单。
#比如刘八在第三周出勤5次,而在第二周只出勤2次,所以应当显示在屏幕上
X=C3-C2
print("第三周比第二周出勤更多的人员名单:",X.keys())wb.close()
app.quit()

执行结果:

第一周每个人出勤次数 Counter({'田七': 5, '崔九': 4, '王二': 3, '张三': 3, '王五': 3, '黄大': 3, '李四': 3, '刘八': 2, '顾十': 2})
第一周刘八出现了: 2 次
第二周刘八出现了: 2 次
第三周刘八出现了: 4 次
连续三周每个人的合计出勤次数为: Counter({'田七': 12, '王二': 9, '黄大': 9, '李四': 9, '刘八': 8, '崔九': 8, '顾十': 8, '赵六': 8, '张三': 7, '王五': 5})
第三周比第二周出勤更多的人员名单: dict_keys(['崔九', '顾十', '刘八', '王五'])

例子9:读取excel数据,用matplotlib生成多个图表,并将图表保存到本地

编写程序读取某公司各产品线产量报表(内容如下图),然后为每一个产品(即每行)生成一张统计图(柱形图),并将所有这些图表都存放到某一文件夹下。

import xlwings
import matplotlib.pyplot as plt#1、 从Excel中读取所有数据(包含表头信息)
#(1)打开excel并定位到sheets
app=xlwings.App()
wb=app.books.open(r"C:\Users\14031\Documents\pydemo\python02_04_01.xlsx")
ws=wb.sheets[0]
#(2)读取excel指定区域的单元格值(每一行为一个小列表,所有的小列表组成一个大列表)
all=ws.range('c3:O12').value
#(3)关闭excel
wb.close()
app.quit()#2、将读取excel中的值打印出来
print(all)#3、设置pyplot的中文兼容性、以及横纵轴标签
#(1)设置中文兼容性
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#(2)设置横轴和纵轴的名称
plt.xlabel('月份')
plt.ylabel('产量')#4、设置图标中的横纵坐标数据显示内容
#(1)all数据中第1个子列表从第2个元素开始为月份,先取出,待会可以用作横轴的值。
yufen=all[0][1:]#(2)all数据中从第二个子列表开始,都是产品的产量。for chanpin in all[1:]:# 每个子列表的第一个元素是产品的编号名称。可以取出。待会用作每个产品的title。# 字列表从第二个元素开始,就是这个产品的产量。可以用作纵轴的值。chanpinID=chanpin[0]chanpinNUM=chanpin[1:]# 每个产品编号作为图标标题#柱状图,横坐标:月份,纵坐标:产量。plt.title(chanpinID)plt.bar(yufen,chanpinNUM) ##(可选)将产品每个月份的产量柱状图打印在屏幕上plt.show()#直接保存产品1-12月份的产量图标为png图片。plt.savefig(f'C:/Users/14031/Documents/pydemo\{chanpinID}.png')#每保存一次则清空图标,防止每个产品的图标互相干扰plt.clf()

执行结果:

读取的excle打印如下

[['产品编号', '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], ['A0001', 533.0, 677.0, 625.0, 801.0, 1092.0, 827.0, 400.0, 1053.0, 338.0, 713.0, 197.0, 1045.0], ['A0002', 850.0, 671.0, 1019.0, 840.0, 404.0, 1051.0, 919.0, 869.0, 846.0, 1041.0, 343.0, 431.0], ['B0001', 1049.0, 1090.0, 125.0, 183.0, 236.0, 258.0, 731.0, 1091.0, 1063.0, 421.0, 264.0, 887.0], ['C0001', 270.0, 237.0, 523.0, 995.0, 949.0, 193.0, 654.0, 1095.0, 651.0, 1060.0, 769.0, 202.0], ['C0002', 837.0, 723.0, 770.0, 886.0, 851.0, 591.0, 185.0, 911.0, 503.0, 988.0, 762.0, 389.0], ['C0003', 1050.0, 462.0, 634.0, 563.0, 309.0, 1017.0, 406.0, 863.0, 323.0, 1042.0, 1090.0, 534.0], ['D0001', 674.0, 1031.0, 262.0, 721.0, 609.0, 755.0, 588.0, 783.0, 618.0, 926.0, 216.0, 969.0], ['D0002', 1099.0, 704.0, 270.0, 381.0, 1076.0, 426.0, 606.0, 470.0, 470.0, 542.0, 525.0, 750.0], ['D0003', 141.0, 869.0, 276.0, 913.0, 779.0, 266.0, 304.0, 755.0, 881.0, 425.0, 690.0, 794.0]]

保存到本地的png图表文件:

例子10:通过datetime.datetime类将日期相减。

(1)datetime对象的strftime()方法:将时间对象转换为任意格式的字符串。格式:d.strftime(“期望格式”)。
(2)datetime对象的strptime()方法:将描述时间的字符串转换为datetime格式。格式:datetime.strptime(“待转换的字符串”,“该字符串当前使用的格式”)。【例子中有用】

本地存放另一个huangdi.txt的文件,内容是“名字,出生日期,仙逝日期”。请计算出每个皇帝的寿命,并计算出所有皇帝平均寿命。

from datetime import datetimefile=r"C:\Users\14031\Documents\pydemo\huangdi.txt"#打开file文件的,并将文件内容保存到content,并读取内容保存到all。
with open(file,"r",encoding='utf-8') as content:all=content.readlines()#创建一个空字典,待会用于存放各个皇帝一生的天数
ShengMingDay={}#遍历读取每个皇帝的姓名、出生日期、仙逝日期
for huangdi in all:huangdi = huangdi.replace("\n", "") #使用replace将列表元素中的回车符去掉。“朱瞻,1398年3月16日,1435年1月31日”huangdi=huangdi.split(",") #将取到的列表中字符串元素通过已有的分号再拆分为列表。['朱瞻', '1398年3月16日', '1435年1月31日']#print(huangdi)name=huangdi[0]# 获取huangdi的第二个元素出生日期,将描述事件的字符串转换为datatime格式。“1398-03-16 00:00:00”shengri=datetime.strptime(huangdi[1],"%Y年%m月%d日")#print(shengri)# 获取huangdi的第三个元素仙逝日志,将描述事件的字符串转换为datatime格式。“1908-11-14 00:00:00”xianshi=datetime.strptime(huangdi[2],"%Y年%m月%d日")#print(xianshi)shouming=xianshi-shengri#用仙逝日期减去出生日志,等于总共活了多少天#print(shouming)#将获取的每个皇帝的寿命天数追加到ShengMingDay字典,格式为“姓名:寿命”。ShengMingDay[name]=shouming.days
#打印所有皇帝的寿命天数
print(ShengMingDay)#计算所有皇帝的平均寿命天数
avg=sum(ShengMingDay.values())/len(ShengMingDay)
print("皇帝的平均寿命:",round(avg),"天")

执行结果:

{'朱棣': 23477, '朱高炽': 17087, '朱瞻': 13469, '朱祁镇': 13235, '朱见深': 14519, '朱祐樘': 12731, '朱祐杬': 15695, '朱厚照': 10767, '朱厚熜': 21679, '朱载垕': 12907, '朱翊钧': 20803, '朱常洛': 13909, '朱由校': 7940, '朱由检': 12132, '福临': 8363, '玄烨': 25066, '胤禛': 20752, '弘历': 31912, '颙琰': 21842, '旻宁': 24633, '奕詝': 10994, '载淳': 6834, '载湉': 13606, '溥仪': 22532}
皇帝的平均寿命: 16537 天

例子11:matplotlib:折线图,使用xticks给横坐标自行制定标签

matplotlib.pyplot 的折线图方法 plot() 在默认情况下,会把横坐标列表直接作为刻度标签。如果想自行指定横轴标签,比如改成 “张三 李四 王五 赵六”,则需要调用 pyplot.xticks()。
横轴值为x,显示标签为t。

import matplotlib.pyplot as pltdef myplot(heng,zong,hm):plt.rcParams['font.sans-serif'] = ['fangsong']#将横轴的值为heng,标签为hm。plt.xticks(heng,hm)plt.plot(heng,zong) #折线图plt.show()if __name__ == "__main__":x = [1, 2, 3, 4]y = [25, 87, 36, 51]t = ["张三", "李四", "王五", "赵六"]myplot(x,y,t)

执行结果:

例子12:使用try except 结构进行异常处理—数据清理

python_up9.txt文件内容如下:

产品,A地区,B地区
产品1,1136,723
产品2,836,1417
产品3,573,985
产品4,739,598
产品5,1303,
产品6,1424,897
产品7,998,546
产品8,无数据,538
产品9,845,1105
产品10,,679
产品11,587,0
产品12,539,769
产品13,1261,717
产品14,1278,
产品15,1051,1120
产品16,####,1099
产品17,1125,964
产品18,920,N/A
产品19,649,1229
产品20,699,0
产品21,1412,933

该文件中每行内容均包括三个部分:产品名称、A地区销量数字、B地区销量数字 , 各自用逗号分开。

不过由于数据搜集和整理中存在的一些问题,该文件中可能存在下面几种错误记录:
• 部分数字存在缺失,比如会出现 “产品N, 2000, ” (缺少B地区销量)和 “产品N, , 2000”(缺少A地区销量)的情况;
• 部分数字内容或格式错误,比如会出现 “产品N, --, 2000” 的情况。
• 可能有部分产品在B地区的销量为0,即 产品N, 2000, 0” 的情况,导致无法计算比例。

编写一个程序读取该文件的每一行记录;对于每一条记录,如果其数字健全并且格式正确,则在屏幕上输出该产品A地区销量与B地区销量的比例;否则提示该产品无法计算,然后跳过这一行,继续检查计算下一条记录。

file=r"C:\Users\14031\Documents\pydemo\python_up9.txt"with open(file,'r',encoding="Utf-8") as content:all=content.readlines()chanxian=[]#遍历列表all中的每一个产品的信息,表中第一个元素为标题,可以忽略
for one in all[1:]: #如:'产品2,836,1417 \n'chanpin=one.strip()#去除字符串中的空格,如:'产品2,836,1417'chanpin=chanpin.split(",") #通过字符串中的逗号将字符串拆分为多个列表,如:['产品1', '1136', '723']print(chanpin)# 使用try尝试求chanpin的第二三个元素的比例,正确则只执行try的内容。# 如果try中内容尝试失败,则进入excpet。try:  bili=float(chanpin[1])/float(chanpin[2])  print(chanpin[0],"A地区和B地区的销量比例为:",format(bili,"0.2"))except Exception as e:  #将出现的抛错信息保存在eprint(chanpin[0],"数据存在问题,无法计算:",e)

执行结果:

产品1 A地区和B地区的销量比例为: 1.6
产品2 A地区和B地区的销量比例为: 0.59
产品3 A地区和B地区的销量比例为: 0.58
产品4 A地区和B地区的销量比例为: 1.2
产品5 数据存在问题,无法计算: could not convert string to float:
产品6 A地区和B地区的销量比例为: 1.6
产品7 A地区和B地区的销量比例为: 1.8
产品8 数据存在问题,无法计算: could not convert string to float: '无数据'
产品9 A地区和B地区的销量比例为: 0.76
产品10 数据存在问题,无法计算: could not convert string to float:
产品11 数据存在问题,无法计算: float division by zero
产品12 A地区和B地区的销量比例为: 0.7
产品13 A地区和B地区的销量比例为: 1.8
产品14 数据存在问题,无法计算: could not convert string to float:
产品15 A地区和B地区的销量比例为: 0.94
产品16 数据存在问题,无法计算: could not convert string to float: '####'
产品17 A地区和B地区的销量比例为: 1.2
产品18 数据存在问题,无法计算: could not convert string to float: 'N/A'
产品19 A地区和B地区的销量比例为: 0.53
产品20 数据存在问题,无法计算: float division by zero
产品21 A地区和B地区的销量比例为: 1.5

[python]学习过程小例子相关推荐

  1. 42个Python实用小例子[内附200+代码地址]

    经常有同学苦恼,学了python基础之后找不到合适的练手机会.为此,有位热心人创建了一个项目,搜集整理了一堆实用的python代码小例子.这些小例子包括但不限于:Python基础.Web开发.数据科学 ...

  2. python导入dat数据_Kaggle影评数据集,Python数据分析小例子14

    1 了解数据 数据来自kaggle,共包括三个文件: movies.dat ratings.dat users.dat movies.dat包括三个字段:['Movie ID', 'Movie Tit ...

  3. python小例子-Python 常用小例子

    作者原文 https://mp.weixin.qq.com/s/eFYDW20YPynjsW_jcp-QWw 内置函数(63个) 1 abs() 绝对值或复数的模 In [1]: abs(-6) Ou ...

  4. Python一些小例子的代码

    文本操作,实现边输入边输出 #实现边输入边输出 需要去Windows 找到该记事本文件,修改其内容并保存才可以真正的做到 import os f_read = open(r"..\day6\ ...

  5. python练习小例子(二)

    1.tuple使用 1 #!/user/loacl/bin/python2 a = (1,4,5,-10, 11)3 b = (7,)4 print a[2]5 print b[0] 2.for语句使 ...

  6. python闭包小例子

    ------------------ 首先根据实例, 体会一下闭包的效果 ------------------ 定义闭包: def foo(x): a = [0] def bar(y): a[0] = ...

  7. python编程人工智能小例子,python人工智能算法代码

    python 怎么实现人工智能 一.Python是解释语言,程序写起来非常方便写程序方便对做机器学习的人很重要. 因为经常需要对模型进行各种各样的修改,这在编译语言里很可能是牵一发而动全身的事情,Py ...

  8. 一行python代码能干_几个小例子告诉你, 一行Python代码能干哪些事

    首先你要了解一下Python之禅,一行代码输出"The Zen of Python": python -c "import this" "" ...

  9. 几个小例子告诉你, 一行Python代码能干哪些事

    首先你要了解一下Python之禅,一行代码输出"The Zen of Python": python -c "import this" "" ...

最新文章

  1. 将单向链表按某值分成左边小、中间相等、右边大的形式
  2. 杭电1027Ignatius and the Princess II模拟
  3. c++ map 多线程同时更新值 崩溃_深入理解并发安全的 sync.Map
  4. 完美解决 bash: hexo: command not found
  5. [转载] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
  6. Python机器学习:PCA与梯度上升:05高维数据映射成低维数据(封装一个PCA)
  7. Axure高保真移动端智能数据监控+用户画像+饼状图+条形图+折线图数据统计+抖音直播app用户数据统计+智慧移动端主播粉丝、评论、播放量大数据统计+套餐购买、续费套餐prd流程
  8. 树莓派添加USB外接硬盘
  9. php没有输出报错信息的解决
  10. 感动的要哭了(不得不看)
  11. 九种NPP\GPP数据集介绍和下载
  12. 手把手教你如何建立U盘免疫文件夹
  13. 基于Java Swing五子棋小游戏设计和实现
  14. mysql分区替换,MySQL交换分区的实例详解
  15. python一笔画五角星_五角星怎么画标准(一笔画五角星的顺序)
  16. 如何使用决策树判断要不要去相亲?
  17. jquery easyui datagrid deleteRow(删除行)的BUG!
  18. 中序和后序(前序和中序)序列确定一颗二叉树
  19. oracle查询截图,Oracle高级查询
  20. 华为手机备忘录资料备份

热门文章

  1. pandas 中上下两行相减(隔行相减) -- shift函数的使用
  2. golang识别身份证号
  3. SAP中统驭科目理解及举例
  4. PHP发生Call to undefined function imagecreate()错误的解决办法
  5. pdf文件删除空白页技巧介绍
  6. Anaconda 修改文件保存路径
  7. 八、服务器【Ubuntu】GPU-TeslaP100部署
  8. 连接WiFi电脑却无法上网
  9. HARK学习(八)--LoadSourceLocation
  10. 青春魅族为何一幅“龙钟老态”?