视频课程
1、(按H/h键 展示快捷键帮助)Jupyter笔记本有两种不同的键盘输入模式. 编辑模式允许您将代码或文本输入到一个单元格中,并通过一个绿色的单元格来表示 命令模式将键盘与笔记本级命令绑定在一起,并通过一个灰色的单元格边界显示,该边框为蓝色的左边框。
命令模式 (按键 Esc 开启)快捷键:
Enter : 转入编辑模式
Esc:进入command模式
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
A:在上方增加一个cell
B:在下方增加一个cell
Tab:代码补全
2、Pandas使用xlsxwriter引擎保存数据,可给数值列设置特定的格式
https://blog.csdn.net/pdcfighting/article/details/112342919
3、dataframe:
df.loc:用 标签索引定位
df.iloc[行,列]:用position定位
df.ix:新版本遗弃
df.loc[df['sex']=='male','age'].mean() 统计
df.loc[(df['终止时间']==20200501)].count()
df.groupby('终止时间')['起飞'].value_counts()
(df.groupby('终止时间').count())['机型'].sum()
low = datetime(2021,3,27) //大于指定日期的所有记录
df.loc[(df['结束日期']>=low)]
//Pandas日期数据处理:如何按日期筛选、显示及统计数据
https://www.cnblogs.com/lemonbit/p/6896499.html
4、df = pd.read_excel(r"./data/202010221216(初始数据).xls",
sheet_name=0,header=0,
usecols='A,C:E', //
读入excel
选定的列A,C,D,E,也可以通过传列表['
航班号','
STD']指定列名
dtype={ '航班号':"string", //字典: str也是object类型,string是字符串类型
'执行日期':"period[D]", // 时间周期 period[Y]只显示年, period[D]显示年月日
"开始日期":"period[D]",
"STD":"string",
"STA":"string",
"结束日期":"period[D]"})
dtype尽量人工指定,避免使用object混合对象 类型,因为类型不确定,影响后续使用对应函数处理。
usecols建议使用字符串列表,可读性高,增减列不影响,技巧,从excel拷贝列名,然后执行: '航站1 离站1 到达2 航站2 离站2 '.split() 得到 字符串列表
usecols=['航站1', '离站1', '到达2', '航站2', '离站2']
parse_dates =[' 执行日期',' 结束日期'] ,通过 列表( 或字典,指定列名) 指定解析成日期格式的列;设置为 True,尝试将索引解析成 日期格式datetime64
任务性质 | 航班号 | 机型 | 机号 | 任务分类 | 起飞 | STD | STA | 落地 | 执行日期 | 班期 | 开始日期 | 结束日期 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | N | AZG085 | B747 | VQBVB | H/Y | UBBB | 1645 | 0005 | ZHCC | 2020-11-01 | 7 | 2020-10-31 | 2020-11-01 |
with pd.ExcelWriter('./data/bydateplan.xls',
date_format='YYYY-MM-DD',
datetime_format='YYYY-MM-DD HH:MM:SS') as writer: // ' YYYY-MM-DD'只显示年月日
df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()
*使用 datetime_format,避免写入 excel日期格式是“ 2018-12-08 00:00:00” ,而是“2018-12-08”;例如datetime_format='HH:MM',写入excel格式为“10:54“
5、解析STD/STA的时分格式。
1)df = pd.read_excel(r"./data/test.xls",
parse_dates=[0],
date_parser=lambda x:pd.to_datetime(x,format='%Y年%m月%d日 %I时%M分%S秒'))
date_parser是 function,解析日期格式的函数;将“2018年12月08日 10时54分34秒”解析成“ 2018-12-08 10:54:34”
2)df = pd.read_excel(r"./data/test.xls",
parse_dates=[4],
date_parser=lambda x:pd.to_datetime(x,format='%I%M%S'))
将“111200”解析成“ 1900-01-01 11:12:00 ”
3)df = pd.read_excel(r"./data/test.xls",
parse_dates=[1],
date_parser=lambda x:pd.to_datetime(x,format='%Y年%m月%d日'))
将“2020年02月15日 10时54分34秒”解析成“ 2020-02-15 ”
4)df = pd.read_excel(r"./data/test.xls",
parse_dates=[4],
date_parser=lambda x:pd.to_datetime(x,format='%I%M'))
将“1112”解析成“ 1900-01-01 11:12:00 ”, 但是对于“1830”解析报错,怎么能识别24小时制?
——将 format='%I%M'改为 format='%H%M',则解析24小时。
|
Hour (24-hour clock) as a zero-padded decimal number. |
00, 01, …, 23 |
(9) |
|
Hour (12-hour clock) as a zero-padded decimal number. |
01, 02, …, 12 |
|
6、读取excel时去除多余的“空格/回车/换行”符
1)df = pd.read_excel(r"./data/外国及港澳台地区公司正班落地航班计划.xls")
航班号 机型 班期 有效期起始 有效期截止
74N/74Y \t.....6.\t 20200329 20201024
2)df = pd.read_excel(r"./data/外国及港澳台地区公司正班落地航班计划.xls", 不能选择多列处理。
converters={'航班号':lambda x: x.strip()})
或者:
df = pd.read_excel(r"./data/外国及港澳台地区公司正班落地航班计划.xls", 能指定多列处理。
converters={'航班号':str.strip,'班期':str.strip})
航班号 机型 班期 有效期起始 有效期截止
74N/74Y \t.....6.\t 20200329 20201024
7、int64类型( '数字代码')需先转换为str类型,再转换为string类型:df['数字代码']= df['数字代码']. astype('string')
8、Python datetime模块中strptime和strftime的区别:
strptime:
p表示parse,表示分析的意思,所以strptime是给定一个时间字符串和分析模式,返回一个
时间对象。
strftime:
f表示format,表示格式化,和strptime正好相反,要求给一个时间对象和输出格式,返回一个时间
字符串,
并按照给定的格式打印,
时间格式的书写可参照链接:
9、 DataFrame中一个 批量数据替换
df['有效期截止'].replace(to_replace = 20201022 ,value = 20200405 ,inplace=True)
10、删除不用的列
df.drop(['到达4','航站4'],axis=1,inplace=True)
11、 存在nan值的情况,需要先进行判断找出这样的值再进行分情况处理
def turn0(conf):
if pd.isnull(conf):
return "0"
else:
return conf
df['航班性质'] = df.apply(lambda x:turn0(x['航班性质']),axis = 1)
航班性质 对应“是否外航,需要转换为0/1
df['航班性质'] = df['航班性质'].apply(lambda x:"0" if '外机' not in x else "1")
12、修改列名:
df.rename(columns={'航班性质':'是否外航','创建人':'修改','航路1':'航路','航季':"季度","起飞":"起飞机场","落地":"落地机场",
"STD":"预起时间","STA":"预落时间","开始日期":"开始时间","结束日期":"结束时间","班期":"日期"},inplace=True)
分类统计: df.groupby('结束日期')['结束日期'].value_counts()
13、保存为xls文件
with pd.ExcelWriter('./data/bydateplan.xls',
date_format='YYYY-MM-DD',
datetime_format='YYYY-MM-DD HH:MM:SS') as writer:
df.to_excel(writer, sheet_name='MHATC', index=False,header=True,
columns=["航班号","机型","任务性质","起飞机场","落地机场","预起时间","预落时间","日期","开始时间","结束时间","季度","修改","备注","是否外航","航路"])
writer.save()
13、选择文件、文件夹对话框
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
Folderpath = filedialog.askdirectory() #获得选择好的文件夹
Filepath = filedialog.askopenfilename() #获得选择好的文件