1.基础知识
2.1 format 格式化输出
2.2 浮点数设置
2.3 百分比设置
2.4 列表
- 列表复制 :a=[‘1’]*2
- 列表合并:+,或者A.extend(B)将A合并到B中
- 插入元素:
往A中加入元素4,A.append(4)
在A中的指定位置(3)加入4,A.insert(2,4)
获取值4在列表出现的次数,A.count(4)
获取某个值4出现的位置,A.index(4)
获取列表A中指定位置的值,利用索引
删除列表A 中的值,删除值A.remove(4),删除指定位置(3)的值A.pop(2)
对列表的值进行排序,A.sort()
2.5 map函数
2. Pandas数据结构
2.1 Series数据结构
Series是一种类似于一维数组的对象,由一组数据及一组与之相关的数据标签索引组成。
2.11 Series的创建
import pandas as pd
# 只传入值,默认索引从0开始
s=pd.Series(['a','b'])
#传入值和指定索引
s=pd.Series(['a','b'],index=['1','2'])
#传入字典,key对于索引,value对应值
2.12 获取Serie的索引和值
- 获取索引:s.index
- 获取值:s.values
2.2 DataFrame数据结构
DataFrame是由由一组数据与一对索引(行索引与列索引)组成的表格型数据结构。
2.21 DataFrame的创建
传入列表
传入字典
2.22 获取DataFrame的索引
- 列索引:df.columns
- 行索引:df.index
3. 读取数据源
3.1 读取.xlsx文件
excel实现:双击直接打开
#电脑的路径默认使用\,在路径前加入转义字符r,避免路径里面的\被转义
df=pd.read_excel(r'C:\Users\text.xlsx')
#也可以/
df=pd.read_excel('C:/Users/text.xlsx')
#指定导入哪个sheet,指定sheet的名称
df=pd.read_excel('C:/Users/text.xlsx',sheet_name='Sheet1')
#指定导入哪个sheet,也可以传入sheet顺序,从0开始计数
df=pd.read_excel('C:/Users/text.xlsx',sheet_name=0)
# 指定将文件的第0列为行索引
df=pd.read_excel('C:/Users/text.xlsx',sheet_name=0,index_col=0)
#指定第0行的内容当作列索引
df=pd.read_excel('C:/Users/text.xlsx',sheet_name=0,header=0)
#指定读取某些列,usecols传入列表(列名值,或者列的索引号)
df=pd.read_excel('C:/Users/text.xlsx',sheet_name=0,usecols=['','','',''])
3.2 读取.csv文件
excel实现:双击直接打开
#电脑的路径默认使用\,在路径前加入转义字符r,避免路径里面的\被转义
df=pd.read_csv(r'C:\Users\text.csv')
#指明分隔号符号;csv文件默认是,号分割,如果text是用空格为分隔符,那么默认,号分不开
df=pd.read_csv('C:/Users/text.csv',sep='')
#指定读取行数,读取前两行
df=pd.read_csv('C:/Users/text.csv',nrows=2)
#指定编码格式
# 如果文件时CSV-UTF-8文件,编码格式改为utf-8
df=pd.read_csv('C:/Users/text.csv',encoding='utf-8')
# 如果文件时CSV文件,编码格式改为gbk
df=pd.read_csv('C:/Users/text.csv',encoding='gbk')
#如果文件路径含有中文,用上面的会报错,需要将默认的C语言改为python
df=pd.read_csv('C:/Users/学习笔记/text.csv',engine='python',encoding='utf-8-sig')
df=pd.read_csv('C:/Users/text.csv',engine='python',encoding='gbk')
#.csv文件行列索引,以及导入指定列与.xlsx文件一致
3.3 读取.txt文件
excel实现:数据栏>获取外部数据>自文本
#read_table()是将利用分隔符分开的文件导入DataFrame的通用函数,它不仅可以导入.txt文件,还可以导入.csv文件
df=pd.read_table('C:/Users/text.txt',sep='')
#读取csv文件即使默认的,号的分隔符,也不可以省略不写
df=pd.read_table('C:/Users/text.csv',sep=',')
# 其他的与read_csv()函数的基本一致
3.4 导入sql文件
excel实现:数据栏>自其他来源导入sql文件
python实现:第一步将python与数据库进行连接,第二步利用python执行sql查询语句。
3.5 辅助功能
- 获取前3行:df.head(3)
- 获取行列数:df.shape
- 获取数据表的数据类型:df.info()
- 获取某列的数值分布情况:df.describe()
4. 数据导出
4.1 导出为.xlsx文件
在python中,文件导出为.xlsx文件使用的是df.to_excel()
函数。
**注意:**同一导出的文件已经在本地打开,则不能再次运行导出代码。
# 1.设置文件导出的路径
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx")
# 2.设置sheet名称
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1')
# 3.设置索引
# 上面两种方式导出文件的索引都是默认的,即0,1,...
# 设置参数,保留原来数据的索引
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1',index=False)
# 4.设置要导出的列
# 若数据的列很多,我们只需导出其中几列
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1',index=False,columns=['列名1','列名2'])
# 5.设置编码格式
# 我们在导入/导出文件时需要设置编码格式。
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1',index=False,encoding="utf-8")
# 6.缺失值处理
# 对缺失值填充。
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1',index=False,encoding="utf-8",na_rep=0)
# 7.无穷值处理
df.to_excel(excel_writer=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.xlsx",sheet_name='模型1',index=False,encoding="utf-8",na_rep=0,inf_rep=0)
4.2 导出为.csv文件
在python中,文件导出为.csv文件使用的是df.to_csv()
函数。
# 1.设置文件导出的路径
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv")
# 2.设置索引
# 上面两种方式导出文件的索引都是默认的,即0,1,...
# 设置参数,保留原来数据的索引
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv",index=False)
# 3.设置要导出的列
# 若数据的列很多,我们只需导出其中几列
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv",index=False,columns=['列名1','列名2'])
# 4.设置分割符号
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv",index=False,sep=",")
# 5.缺失值/无穷值处理
# 对缺失值填充。
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv",index=False,sep=",",na_rep=0,inf_rep=0
# 6.设置编码格式
# 默认使用utf-8,但是会出现乱码,常使用utf-8-sig/gbk
df.to_csv(path_or_buf=r"D:\E-WenDang\ruanjianDM\数字方向\分析建模.csv",index=False,sep=",",na_rep=0,encoding="utf-8-sig")
4.3 将文件导出多个sheet
4.4 按日期保存最新数据到指定文件中
d=dt.today().strftime('%Y-%m-%d')
date=[d,d,d,d,d]
titles=['平面', '网页', '交互','审核','其他']
c,dayra=chan_neng_third()
daydict={'日期':date,'工种分类':titles,'所需天数':dayra}
daydate=pd.DataFrame(daydict,columns=['日期','工种分类','所需天数'])
everydaydate= pd.read_excel('所需天数日更.xlsx',sheet_name='Sheet1')
book = load_workbook('所需天数日更.xlsx')
with pd.ExcelWriter("所需天数日更.xlsx", mode='a', engine='openpyxl') as writer:
if pd.to_datetime(daydate.loc[daydate.index[-1],'日期']).strftime('%Y-%m-%d') != everydaydate.loc[everydaydate.index[-1],'日期']:
everydaydate = everydaydate.append(daydate,ignore_index=True,sort=False)
writer.book= book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
everydaydate.to_excel(writer,sheet_name='Sheet1',index=False)
elif pd.to_datetime(daydate.loc[daydate.index[-1],'日期']).strftime('%Y-%m-%d') == everydaydate.loc[everydaydate.index[-1],'日期']:
everydaydate=everydaydate.drop(everydaydate.iloc[[-5,-4,-3,-2,-1]].index)
everydaydate = everydaydate.append(daydate,ignore_index=True,sort=False)
writer.book= book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
everydaydate.to_excel(writer,sheet_name='Sheet1',index=False)