1.添加Age、Fullname字段
esproc:
A4:我们用T表示序表。T.derive()表示增加字段。这里用age(日期)计算出年龄,作为Age字段。用NAME,SURNAME得到Fullname。
A5:计算运算时间(interval:计算时间间隔。@ms表示以毫秒为单位)
python:
import time
import pandas as pd
import datetime
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
today = datetime.datetime.today().year
data["Age"] = today-pd.to_datetime(data["BIRTHDAY"]).dt.year
data["Fullname"]=data["NAME"]+data["SURNAME"]
print(data)
e = time.time()
print(e-s)
计算出BIETHDAY字段的值(日期)距今天的年数,作为年龄字段。用NAME+SURNAME作为Fullname字段
结果
esproc:
python:
2.提取需要的记录或者字段(前3个字段,第3~10条记录)
esproc:
A4:T.new()表示新建序表。这里以第1,2,3个字段作为新表的字段。T.A,表示取出序列中包含的行号。
python:
import time
import pandas as pd
import datetime
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
data = data.iloc[2:10,:3]
print(data)
e = time.time()
print(e-s)
使用df.iloc[]切片获得3~10条记录,前三个字段(dataframe的字段号和记录号都是从0开始计数的)。
结果:
esproc:
python:
3.筛选符合条件的记录
esproc:
A4:T.select()筛选符合条件的记录。这里是筛选STATE=="California"为真的记录
python:
import time
import pandas as pd
import datetime
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
data = data[data['STATE']=="California"]
print(data)
e = time.time()
print(e-s)
取出data['STATE']=="California"的记录
结果:
esproc:
python:
4.计算字段的常用值
A4:T.min()计算字段最小值
A5:T.max()计算字段最大值
A6:T.avg()计算字段平均值
A7:T.sum()计算字段总和
A8:计算字段中位数。A.median(k:n)函数,参数全省略时,如果序列长度是奇数返回中间位置值;如果序列长度是偶数返回中间两个值的平均值。
A9:T.variance()计算字段方差。
python
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
min = data["SALARY"].min()
max = data["SALARY"].max()
avg = data["SALARY"].mean()
sum = data["SALARY"].sum()
median = data["SALARY"].median()
var = data["SALARY"].var()
print(min,max,avg,sum,median,var)
e = time.time()
print(e-s)
df[字段名]表示取得字段。min(),max(),mean(),sum(),median(),var()分别计算最小值,最大值,平均数,总和,中位数,方差。
结果
5.统计各部门员工的男女人数
esproc:
A4:T.groups()表示以DEPT分组,计算GENDER==“M”或GENDER==“F”的值,得到各部门男女员工的数量。
python
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
group = data.groupby(['DEPT','GENDER']).size()
print(group)
e = time.time()
print(e-s)
截取GENDER==‘M’或者GENDER==‘F’的切片以DEPT通过goupby()函数得到以DEPT的分组。最后用size()函数得到结果。
结果:
esproc:
python:
6.统计男女员工的平均年龄
esproc:
A4:T.groups()用来分组,avg()计算平均值,age()根据日期计算时间间隔。
python
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
data["Age"] = today-pd.to_datetime(data["BIRTHDAY"]).dt.year
avg_age = data.groupby('GENDER')['Age'].mean()
print(avg_age)
e = time.time()
print(e-s)
计算得到Age字段。然后用groupby()函数以GENDER分组,最后通过mean()函数得到平均值。
结果:
esproc:
python:
7.计算员工薪酬比前一名员工高的最大人数
esproc:
A4:if(condition,x1,x2)表示如果条件成立,if语句的值为x1,否则值为x2,在这儿计算如果SALARY比前一个员工薪水高的话a=a+1。从而得到A3.(a),其中a随着if语句不断的变化。最后得到一个序列,max()函数得到最大值。
python
s = time.time()
data = pd.read_csv("C:/Users/Sean/Desktop/esproc_vs_python/EMPLOYEE.txt",sep="\t")
a=0 ; m=0
for i in data['SALARY'].shift(0)>data['SALARY'].shift(1):
a=0 if i==False else a+1
m = a if m < a else m
print(m)
e = time.time()
print(e-s)