目录~python
- 共享单车租借平台
- 相关程序代码如下:
- 程序运行效果如下:
- pandas 每日一练:
- 51、使用绝对路径读取本地Excel数据
- 程序运行结果如下:
- 52、查看数据前三行
- 程序运行结果如下:
- 53、查看每列数据缺失值情况
- 程序运行结果如下:
- 54、提取日期列含有空值de行
- 程序运行结果如下:
- 55、输出每列缺失值具体行数
- 程序运行结果如下:
- 56、删除所有存在缺失值的行
- 程序运行结果如下:
- 57、绘制营业额折线图
- 程序运行效果如下-1:
- 程序运行效果如下-2:
- 58、同时绘制yye与sku_cost_prc
- 程序运行效果如下:
- 59、绘制利润率的直方图
- 程序运行效果如下:
- 60、让直方图更细致
- 程序运行效果如下:
- 每日一言:
- 持续更新中...
个人主页: 个人感悟: “失败乃成功之母”,这是不变的道理,在失败中总结,在失败中成长,才能成为IT界的一代宗师。
共享单车租借平台
先创建两个类。
一个单车类Bike,用来实例化单车对象,绑定单车的属性。
一个平台管理类Manage,将查询车辆,共享车辆,租借车辆,归还车辆功能封装到该类中。并且,当平台管理类Manage实例化对象时,可以给用户弹出一个菜单,让用户选择不同的功能。
相关程序代码如下:
class Bike2:
def __init__(self):
pass
def menu(self):
pass
def xx(self):
pass
def gx(self):
pass
def zj(self):
pass
def gh(self):
pass
# 利用初始化__init__ ,让实例被创建时自动获取这些属性
class Bike:
# 初始化方法 NO代表车辆编号、age代表车辆年限、
# state代表车辆状态,0代表待租借,1代表租借中
def __init__(self, NO, age, state=0):
self.NO = NO
self.age = age
self.state = state
def __str__(self):
if self.state == 0:
status = '待租借'
else:
status = '租借中'
return '车辆编号%d 已经运行%d年,车辆状态:%s' % (self.NO, self.age, status)
bike = Bike(1001, 2)
print(bike)
class Manage:
# 定义一个列表,用来存储所有的车辆
bike_list = []
def __init__(self):
bikeA = Bike(1001, 2)
bikeB = Bike(1002, 2)
bikeC = Bike(1003, 1)
self.bike_list.append(bikeA)
self.bike_list.append(bikeB)
self.bike_list.append(bikeC)
# 查询所有车辆信息,完善info_bike方法
# 系统菜单
def menu(self):
print("欢迎使用共享单车租借系统\n")
while True:
print('1.查询所有车辆\n 2.共享车辆\n 3.租借车辆\n 4.归还车辆\n 5.退出系统\n')
select = int(input('请输入所选功能对应得数字:'))
if select == 1:
# 单车信息
self.info_bike()
elif select == 2:
# 共享单车
self.add_bike()
elif select == 3:
# 租借车辆
self.lease_bike()
elif select == 4:
# 归还车辆
self.revert_bike()
elif select == 5:
# 退出系统
print('期待您下次使用!祝您生活愉快!')
break
# 单车信息
def info_bike(self):
print("所有车辆信息如下:")
for bike in self.bike_list:
print(bike)
def add_bike(self):
new_NO = int(input('请输入车辆编码'))
new_age = int(input('请输入车辆使用年限'))
new_bike = Bike(new_NO, new_age)
self.bike_list.append(new_bike)
print('车辆共享成功!')
# 租借车辆
def lease_bike(self):
lease_NO = int(input("请输入租借的车辆编号"))
for bike in self.bike_list:
# 遍历自行车列表,与用户租借的编号进行匹配
if bike.NO == lease_NO:
# 如果单车在平台中存在
if bike.state == 1:
# 车辆租借中
print("你来晚了,车被租走了")
break
else:
# 车辆待租借
print("租借成功,欢迎您使用绿色出行")
bike.state = 1
break
else:
# print('车辆编号输入错误')
# break
print("该车辆不存在")
def select_bike(self, NO):
# 遍历整个自行车列表
for bike in self.bike_list:
# 如果存在输入编号与车辆列表中的编号一致
if bike.NO == NO:
# 返回该车辆信息
return bike
# 归还车辆
def revert_bike(self):
# 输入归还车辆的编号
revert_NO = int(input("请输入归还的车辆编号"))
# 进行查询
res = self.select_bike(revert_NO)
# 车辆存在
if res != None:
# 租借中,还车成功
if res.state == 1:
# 还车成功
print("还车成功,期待下次使用")
res.state = 0
# 未租借,等待租借
else:
# 车辆等待租借
print("车辆整备完成,等待租借")
# 车辆不存在
else:
print("该车辆不存在,想必您是输错了")
user = Manage()
print(user)
user.menu()
或
class Bike:
# 初始化方法 no代表车辆编号、age代表车辆年限、
# state代表车辆状态,0代表待租借,1代表租借中
def __init__(self, NO, age, state=0):
self.NO = NO
self.age = age
self.state = state
def __str__(self):
if self.state == 0:
status = '待租借'
else:
status = '租借中'
return '车辆编号%d 已经运行%d年,车辆状态:%s' % (self.NO, self.age, status)
class Manage:
# 定义一个列表,用来存储所有的车辆
bike_list = []
def __init__(self):
bikeA = Bike(1001, 2)
bikeB = Bike(1002, 2)
bikeC = Bike(1003, 1)
self.bike_list.append(bikeA)
self.bike_list.append(bikeB)
self.bike_list.append(bikeC)
# 系统菜单
def menu(self):
print("欢迎使用共享单车租借系统\n")
while True:
print(' 1.查询所有车辆\n 2.共享车辆\n 3.租借车辆\n 4.归还车辆\n 5.退出系统\n')
select = int(input('请输入所选功能对应得数字:'))
if select == 1:
# 单车信息
self.info_bike()
elif select == 2:
# 共享单车
self.add_bike()
elif select == 3:
# 租借车辆
self.lease_bike()
elif select == 4:
# 归还车辆
self.revert_bike()
elif select == 5:
# 退出系统
print('期待您下次使用!祝您生活愉快!')
break
# 单车信息
def info_bike(self):
for bike in self.bike_list:
print(bike)
# 共享单车
def add_bike(self):
new_NO = int(input('请输入车辆编码'))
new_age = int(input('请输入车辆使用年限'))
new_bike = Bike(new_NO, new_age)
self.bike_list.append(new_bike)
print('车辆共享成功!')
# 租借车辆
def lease_bike(self):
lease_NO = int(input("请输入租借的车辆编号"))
res = self.select_bike(lease_NO)
if res != None:
if res.state == 1:
# 车辆租借中
print("你来晚了,车被租走了")
else:
# 车辆待租借
print("租借成功,欢迎您使用绿色出行")
res.state = 1
else:
print("该车辆不存在")
def select_bike(self, NO):
# 遍历整个自行车列表
for bike in self.bike_list:
# 如果存在输入编号与车辆列表中的编号一致
if bike.NO == NO:
# 返回该车辆信息
return bike
# 归还车辆
def revert_bike(self):
# 输入归还车辆的编号
revert_NO = int(input("请输入归还的车辆编号"))
# 进行查询
res = self.select_bike(revert_NO)
# 车辆存在
if res != None:
# 租借中,还车成功
if res.state == 1:
# 还车成功
print("还车成功,期待下次使用")
res.state = 0
# 未租借,等待租借
else:
# 车辆等待租借
print("车辆整备完成,等待租借")
# 车辆不存在
else:
print("该车辆不存在,想必您是输错了")
user = Manage()
print(user)
user.menu()
程序运行效果如下:
车辆编号1001 已经运行2年,车辆状态:待租借
<__main__.Manage object at 0x00000248B56E5808>
欢迎使用共享单车租借系统
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:待租借
车辆编号1003 已经运行1年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 2
请输入车辆编码>? 1006
请输入车辆使用年限>? 5
车辆共享成功!
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 3
请输入租借的车辆编号>? 1002
租借成功,欢迎您使用绿色出行
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:租借中
车辆编号1003 已经运行1年,车辆状态:待租借
车辆编号1006 已经运行5年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 4
请输入归还的车辆编号>? 1002
还车成功,期待下次使用
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 1
所有车辆信息如下:
车辆编号1001 已经运行2年,车辆状态:待租借
车辆编号1002 已经运行2年,车辆状态:待租借
车辆编号1003 已经运行1年,车辆状态:待租借
车辆编号1006 已经运行5年,车辆状态:待租借
1.查询所有车辆
2.共享车辆
3.租借车辆
4.归还车辆
5.退出系统
请输入所选功能对应得数字:>? 5
期待您下次使用!祝您生活愉快!
————————————————————————————————————————————
pandas 每日一练:
print()只为转行
# -*- coding = utf-8 -*-
# @Time : 2022/7/27 16:31
# @Author : lxw_pro
# @File : pandas-9 练习.py
# @Software : PyCharm
import pandas as pd
51、使用绝对路径读取本地Excel数据
lxw = pd.read_excel("site.xlsx")
print(lxw)
print()
程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
0 0 1 2016-11-30 ... 8.8 6.77 30.00%
1 1 2 2016-11-30 ... 7.5 5.77 30.00%
2 2 3 2016-11-30 ... 5.0 3.85 30.00%
3 3 4 2016-11-30 ... 19.6 7.54 30.00%
4 4 5 2016-12-02 ... 13.5 10.38 30.00%
.. ... ... ... ... ... ... ...
751 751 752 2016-12-31 ... 1.0 0.77 30.00%
752 752 753 2016-12-31 ... 2.0 1.54 30.00%
753 753 754 2016-12-31 ... 1.0 0.77 30.00%
754 754 755 2016-12-31 ... 7.6 2.92 30.00%
755 755 756 2016-12-31 ... 3.3 2.54 30.00%
[756 rows x 8 columns]
52、查看数据前三行
print(lxw.head(3))
print()
程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
0 0 1 2016-11-30 ... 8.8 6.77 30.00%
1 1 2 2016-11-30 ... 7.5 5.77 30.00%
2 2 3 2016-11-30 ... 5.0 3.85 30.00%
[3 rows x 8 columns]
53、查看每列数据缺失值情况
print(lxw.isnull().sum())
print()
程序运行结果如下:
Unnamed: 0 0
Unnamed: 0.1 0
create_dt 3
sku_cnt 1
sku_sale_prc 1
yye 5
sku_cost_prc 2
lrl 3
dtype: int64
54、提取日期列含有空值de行
print(lxw[lxw['create_dt'].isnull()])
print()
程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
6 6 7 NaN ... 10.8 8.31 30.00%
18 18 19 NaN ... 5.9 4.54 30.00%
21 21 22 NaN ... 6.0 2.31 30.00%
[3 rows x 8 columns]
55、输出每列缺失值具体行数
for col in lxw.columns:
if lxw[col].count() != len(lxw):
loc = lxw[col][lxw[col].isnull().values==True].index.tolist()
print(f"列名:{col}, 第{loc}行位置有缺失值!")
print()
程序运行结果如下:
列名:create_dt, 第[6, 18, 21]行位置有缺失值!
列名:sku_cnt, 第[5]行位置有缺失值!
列名:sku_sale_prc, 第[25]行位置有缺失值!
列名:yye, 第[9, 20, 29, 36, 60]行位置有缺失值!
列名:sku_cost_prc, 第[15, 44]行位置有缺失值!
列名:lrl, 第[15, 19, 50]行位置有缺失值!
56、删除所有存在缺失值的行
lxw.dropna(axis=0, how='any', inplace=True)
print(lxw)
print()
程序运行结果如下:
Unnamed: 0 Unnamed: 0.1 create_dt ... yye sku_cost_prc lrl
0 0 1 2016-11-30 ... 8.8 6.77 30.00%
1 1 2 2016-11-30 ... 7.5 5.77 30.00%
2 2 3 2016-11-30 ... 5.0 3.85 30.00%
3 3 4 2016-11-30 ... 19.6 7.54 30.00%
4 4 5 2016-12-02 ... 13.5 10.38 30.00%
.. ... ... ... ... ... ... ...
751 751 752 2016-12-31 ... 1.0 0.77 30.00%
752 752 753 2016-12-31 ... 2.0 1.54 30.00%
753 753 754 2016-12-31 ... 1.0 0.77 30.00%
754 754 755 2016-12-31 ... 7.6 2.92 30.00%
755 755 756 2016-12-31 ... 3.3 2.54 30.00%
[742 rows x 8 columns]
57、绘制营业额折线图
import matplotlib.pyplot as plt
plt.style.use('seaborn-darkgrid')
plt.rc('font', size=8)
plt.rc('figure', figsize=(4, 3), dpi=150)
lxw['yye'].plot()
plt.show()
程序运行效果如下-1:
或者
plt.plot(lxw['yye'])
plt.show()
程序运行效果如下-2:
58、同时绘制yye与sku_cost_prc
lxw[['yye', 'sku_cost_prc']].plot()
plt.show()
程序运行效果如下:
59、绘制利润率的直方图
plt.hist(lxw['lrl'])
plt.show()
程序运行效果如下:
60、让直方图更细致
lxw['lrl'].hist(bins=30)
plt.show()
程序运行效果如下:
每日一言:
少年乘着希望之风,奔向遥远的未来!!!
持续更新中…
点赞,你的认可是我创作的动力
!收藏,你的青睐是我努力的方向
!评论,你的意见是我进步的财富
!关注,你的喜欢是我长久的坚持
!