# py401 输出系统当前时间
import datetime
i = datetime.datetime.now()
print ("当前的日期和时间是 %s" % i)
print ("ISO格式的日期和时间是 %s" % i.isoformat() )
print ("当前的年份是 %s" %i.year)
print ("当前的月份是 %s" %i.month)
print ("当前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("当前小时是 %s" %i.hour)
print ("当前分钟是 %s" %i.minute)
print ("当前秒是 %s" %i.second)
import calendar
cal = calendar.month(2021, 2)
print ("以下输出2021年2月份的日历:")
print (cal)
#实训一、完成下面示例体验性实训(理解命令格式及功能,输出结果等)
#【示例】请编程,模拟将45名学生的基本数据(学号,姓名,性别,成绩)输出,并存入的学生成绩表.xlsx。 等等。
import numpy as np
import pandas as pd
import random
########## 写入 .txt ##########
filename='hxstbd20.txt'
f= open(filename, 'a')
if f==None:
f=open(filename,'w')
f.close()
f= open(filename, 'a')
xj=['林','谢','张','王','吕','李','黄','陈','孙','毛','文','蒋','卢','杨','吴','郭','许','姚','马','邹','金','牛','叶','郑','罗','曹'] #xj 常用姓字
mj=['芳','军','明','华','玉','素','小','红','伟','青','文','章','宏','志','中','宫','金','濠','辉','鹏','京','松','福','彬','赞','海','伟']
mj=mj+['权','朗','瑶','华','玉','素','芳','红','伟','青','文','章','宏','志' ]
#mj 常见人名用字
hm=np.arange(20041001,20041046,1) #学号 20041001--20041045。 不包括20041046
cg=np.random.uniform(30,100, 45) #随机生成 45个介于 [30,100)之间的小数的均匀分布成绩
xsdata=[('学号','姓名','性别', '成绩')]
for k in range(0,45,1):
i=random.randint(0,25) #不超过len(xj)
j=random.randint(0,38) #不超过len(mj)
t=random.randint(0,38)
xm=xj[i]+mj[j]+mj[t] #xm 随机产生一个的姓名,性别也随机生成
sex='男'
if j%7==0:
sex='女'
xsdata=xsdata+[(hm[k],xm,sex,int(cg[k]))] #成绩取整数int(cg[k])
xh=hm[k]
fs=int(cg[k])
print(hm[k],xm,sex,fs,'\n')
wb=str(xh)+" , "+xm+" , "+sex+" , "+str(fs)+'\n'
f.write(wb)
f.close()
print("-"*60)
input("\n =====================按任一键继续 \n")
print(xsdata)
input("\n =====================按任一键继续 \n")
sd=pd.Series(xsdata) # import pandas as pd
print(sd)
input("\n =====================按任一键继续 \n")
writer = pd.ExcelWriter('HX20学生成绩表.xlsx')
df1 = pd.DataFrame(data=sd)
df1.to_excel(writer,'20大数据1班')
df1.to_excel(writer,'20大数据2班')
writer.save()
print("===任务完成!===")
#输出女同学数据
for k in range(1,46,1):
if "女" in xsdata[k]:
print(xsdata[k])
input("\n =====================按任一键继续 \n")
#输出男同学数据
writer = pd.ExcelWriter('HXIT20男生成绩表.xlsx')
sdn=('学号','姓名','性别', '成绩')
n=0
for k in range(1,46,1):
if "男" in sd[k]:
print(sd[k])
sdn=sdn+(sd[k])
n=n+1
df1 = pd.DataFrame(data=sdn)
df1.to_excel(writer,'20大数据1班男生A表')
writer.save()
input("\n ===20大数据1班男生A表已建立========按任一键继续 \n")
t=len(sdn)//n
dn=np.array(sdn).reshape(n+1, t)
print(dn)
df1 = pd.DataFrame(data=dn)
df1.to_excel(writer,'20大数据1班男生B表')
writer.save()
input("\n =====20大数据1班男生B表已建立!=======按任一键继续 \n")
for k in range(0,n,1):
print(dn[k])
print("-"*40)
#实训二、读出数据文件txt 数据示例
import numpy as np
import pandas as pd
########## 读入 .txt ##########
filename='hxstbd20.txt' #实训一生成的hxstbd20.txt
try:
f= open(filename, 'r')
print(" 数据文件已打开")
except Exception as e:
print(" 数据文件还没有建立!,已建立测试数据文件")
f= open(filename, 'w')
f.write(" 测试数据文件 数据 hello! \n")
f.close()
print("===================")
f=open(filename, 'r')
sd=[]
while True:
line = f.readline()
if line:
print (line)
sd=sd+[line]
else:
break
f.close()
print("-"*80)
#print(sd)
t=0
while t<=44:
if "男" in sd[t]:
print(sd[t])
print("-"*80)
t=t+1
#实训三、读出.xlsx文件数据示例
'''
pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)
该函数主要的参数为io、sheetname、header、names、encoding。
io:excel文件,可以是文件路径、文件网址、file-like对象、xlrd workbook;
sheetname:返回指定的sheet,参数可以是字符串(sheet名)、整型(sheet索引)、list(元素为字符串和整型,返回字典{'key':'sheet'})、none(返回字典,全部sheet);
header:指定数据表的表头,参数可以是int、list of ints,即为索引行数为表头;
names:返回指定name的列,参数为array-like对象。
encoding:关键字参数,指定以何种编码读取。
该函数返回pandas中的DataFrame或dict of DataFrame对象,利用DataFrame的相关操作即可读取相应的数据。
'''
#读入数据 代码示例:
import numpy as np
import pandas as pd
import xlrd
# excel_path = '学生成绩表.xlsx'
# sheet = pd.read_excel('example.xls',sheetname= [0,1])
#参数为None时,返回全部的表格,是一个表格的字典;
d1 = pd.read_excel('HX20学生成绩表.xlsx','20大数据1班')
print('20大数据1班成绩表 \n',d1)
d2 = pd.read_excel('HX20学生成绩表.xlsx','20大数据2班')
print('21大数据2班成绩表 \n',d2)
print(" ===========情况表=== ")
print(d2)
input("\n =====================按任一键继续 \n")
dd=np.array(d2)
import pynp200 as npf # 自编写的模块 内有: def nparray(ar)
npf.nparray(dd)
dd1=dd[:15]
print(dd1) # 输出前15名学生情况
input("\n =====================按任一键继续 \n")
for k in range(0,46,1):
print("-"*40)
print(dd[k])
d = pd.read_excel('HXIT20男生成绩表.xlsx','20大数据1班男生A表') # 注意观察.xlsx文件实际内容及格式
print('男生成绩 A表 \n')
print(d)
h=len(d)//8
print("h=",h)
N1=np.array(d).reshape(h*2+1,8)
print('男学生成绩 A表(2) \n')
for k in range(0,h,1):
print("-"*40)
print(N1[k])
input("\n =====================按任一键继续 \n")
df= pd.read_excel('HXIT20男生成绩表.xlsx','20大数据1班男生B表') # 注意观察.xlsx文件实际内容及格式
print('男生成绩 B表 \n')
print(df)
input("\n =====================按任一键继续 \n")
print('读取的Excel文件前5行数据为:\n', df.head())
print('df的后2行数据为:\n', df.tail(2))
h=len(df)
print('返回索引值为k的行:\n')
for k in range(0,h,1):
print("-"*40)
#df.loc[n]:返回索引值为n的行。
print(df.loc[k])
input("\n =====================按任一键继续 \n")
print('返回索引值为m行n列的数据:\n')
for k in range(0,h,1):
print("-"*40)
print(df.loc[k][1],df.loc[k][3]) #df.loc[m][n]:返回索引值为m行n列的数据。
input("\n =====================按任一键继续 \n")
print("#df.loc[m:n]:返回索引值为m到n的行。")
print(df.loc[5:10])
print("df['str']:返回列名为str的这一列。")
print(df[0],df[1],df[3])
print("df.sort_values('str' ")
print(df.sort_values(3))
input("\n =====================按任一键继续 \n")