知道为什么我要单独拿出2章来给大家普及numpy和pandas么?
因为,在不久的将来,我即将更新ai测试领域的具体应用教程,这算是给大家提前打打基础,扫扫盲。
pandas
可能大家经常在技术讨论群众聊天,就会发现一个现象。就是只要有人提起python的一些数据怎么处理的时候,保准会有人说用pandas。
是的,它就是这样总被人提起,甭管提起它的人自己到底会不会Pandas,也别管到底写没写过哪怕一句pandas,甚至压根不知道在测试的日常工作中,pandas到底用在哪。但是只要有人问,就必须要第一时间会回答pandas,这叫什么,这叫优雅~
我个人的理解是,pandas属于numpy之下的一个扩展功能库,可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。广泛应用在学术、金融、统计学等各个数据分析领域。
应粉丝要求,这种基础知识文章,我会给大家分段记忆。
一共有下载,创建,查看,操作,读写 五部分。
下载
直接pip insatll pandas就可以,这里要说下,如果下载报错或者引入报错,请先百度下错误输出,看看是缺少什么还是版本问题。如果都解决不了的情况下,请立即下载一个新的python,再在新python内pip install pandas,当然你最好一起把numpy也pip install了。
创建
创建什么?pandas创建的东西叫什么?我在很多网站和书上看到的应该叫 序列。
其实,就和你连下标都一起标出来的二维数组很像。
代码语言:javascript复制import pandas as pd
s = pd.Series([1,2,3,4,5])
这个运行后,我们打印s,得到的结果是这样的:左边第一列是行标,第二列开始是内容
我们也可以创建个多列的,既然是多列,那么我们给每列起个名字不过分吧?既然每列有了名字,那么加上内容,那就是地地道道一个字典。
代码语言:javascript复制s = pd.Series({"a":1,"b":2})
print(s)
结果如下:
但是这样创建看起来就不舒服,所以我们用DataFrame方法来创建。
代码语言:javascript复制s = pd.DataFrame({'a':'测试开发干货',"b":[1,2,3],"c":pd.Timestamp('20211229')})
结果如下:
看到了吧,这里面放什么都可以,各种数据类型,时间都可以。就像个简略的excel表格一样清晰。
好,pandas其实就是这样存储数据的工具而已,当然它的性能是非常非常快的,尤其是大数据的时候,比我们自己手写算法什么的要强得多。各种按列排序 ,按行排序,按列求值,平均数啥的,各种需求各种满足的工具。
那么就好好背一背它的各种操作吧,别总是抱怨去大厂面测开面不上,这些基础的死记硬背的都不熟练的话,后面面试也只是给面子走流程,然后pass掉而已,扎心但真实。
用列表创建序列
s1 = pd.Series([1,2,3,4,5])
print(s1) #内容
print(s1.index)#索引
print(s1.values)# 值
使用字典创建序列
s1 = pd.Series({"a":1,"b":2},index=["a","b"])
创建复合型序列
df = pd.DataFrame({'a':1,"b":pd.Series([1,2,3]),"c":pd.Timestamp('20211229'),'D':"测试开发干货"})
通过numpy创建序列
df = pd.DataFrame(np.array([[1,2],[3,4],[5,6]]))
print(df) #查看内容
print(df.describe) #查看统计
print(df.head(2)) #查看头部2行
print(df.tail(2)) #查看倒数2行
print(df.index) #查看数据索引行标
print(df.columns) # 查看数索引列标
Df = df.sort_index(axis=1,ascending=True) # 按轴由小到大排序
Df = df.sort_values(by=0,ascending=True) # 按列头的值 由小到大排序
print(df.mean(0)) #获取每一列均值
print(df.mean(1)) #获取每一行均值
print(df[0]) #输出某列名下的内容
print(df[1:2]) #输出某几行
print(df.loc[:1,:2]) #输出某几行,某几列,按名字,闭合
print(df.iloc[:1,:1]) #输出某几行,某几列,按下标,左开右闭
DF = df.add(1) #每个元素加一
DF = df.apply(lambda x:x.max()-x.min()) # 按列求最大差
df.to_csv('data.csv') #写入csv
DF = pd.read_csv('data.csv') # 读取csv
df.to_excel('data.xlsx','sheet1') # 写入excel DF = pd.read_excel('data.xlsx','sheet1') # 读取excel
- END -