百家讲坛,谈论古今,今天我们不聊别的,我们来聊一聊中国的国宝——大熊猫(bushi)
好好,言归正传,我们今天来讲pandas
import pandas as pd
申明无需多言,高考主要考察Series和DataFrame的用法
一.Series
1.声明
s1 = pd.Series([168,176,169]) #创建Series
s2 = pd.Series([168,176,169],index = ['s1','s2','s3']) #更改Series的index
两种声明方式 ,效果如图:
2.遍历方式
for i in s2.values:
print(i) #输出所有值
for i in s2.index:
print(i) #输出所有index
for i in s2:
print(i) #输出所有值
三种遍历,没有指定则默认输出values,如第三个循环,效果如图:
3.值的获取,修改
s2[0] = 123
s2["s2"] = 123
s2.s3 = 123 #三种修改值的方法
s2["s4"] = 123 #若没有s4,则增加s4并赋值
s2.s5 = 123 #不可以使用这种方式
获取到对应的index并且拿出或者修改相应的值 ,修改后s2变为如图
二.DataFrame
1.声明
df1 = pd.DataFrame({"姓名":["a1","a2","a3"],"身高":[168,169,170]}) #字典方式生成
df2 = pd.DataFrame({"姓名":["a1","a2","a3"],"身高":[168,169,170]},columns = ["姓名","成绩"]) #字典方式下,若设置了columns,则服从columns
df3 = pd.DataFrame([["a1",168],["a2",169],["a3",170]],columns = ["姓名","身高"],index=['s1','s2','s3']) #列表方式生成,index和columns的位置可以互换
print(df3)
三种声明方式,字典可以不设置columns,若设置则服从设置,用列表则一定需要columns,效果如图:
2.读取excel
df4 = pd.read_excel("test_01.xlsx") #读取excel文件
注意需要放在同一个目录下
为了方便大家学习,我们来整一点活把excel文件分享给大家,大家可以直接下载使用
这是excel内的表格
这是pandas的输出
3.遍历
for i in df4:
print(i) #输出columns
for i in df4.columns:
print(i) #输出columns
for i in df4.index:
print(i) #输出index
for i in df4.values:
print(i) #输出values 一个values为一行,输出形式为列表
输出效果如图
import pandas as pd
####################################################################################################
#########################################Series 使用#################################################
####################################################################################################
s1 = pd.Series([168,176,169]) #创建Series
s2 = pd.Series([168,176,169],index = ['s1','s2','s3']) #更改Series的index
print(s1)
print(s2)
for i in s2.values:
print(i) #输出所有值
for i in s2.index:
print(i) #输出所有index
for i in s2:
print(i) #输出所有值
s2[0] = 123
s2["s2"] = 123
s2.s3 = 123 #三种修改值的方法
s2["s4"] = 123 #若没有s4,则增加s4并赋值
s2.s5 = 123 #不可以使用这种方式
print(s2)
####################################################################################################
####################################dataframe使用####################################################
####################################################################################################
df1 = pd.DataFrame({"姓名":["a1","a2","a3"],"身高":[168,169,170]}) #字典方式生成
df2 = pd.DataFrame({"姓名":["a1","a2","a3"],"身高":[168,169,170]},columns = ["姓名","成绩"]) #字典方式下,若设置了columns,则服从columns
df3 = pd.DataFrame([["a1",168],["a2",169],["a3",170]],columns = ["姓名","身高"],index=['s1','s2','s3']) #列表方式生成,index和columns的位置可以互换
print(df3)
df4 = pd.read_excel("test_01.xlsx") #读取excel文件
print(df4)
for i in df4:
print(i,end = ' ') #输出columns
print("\n")
for i in df4.columns:
print(i,end = ' ') #输出columns
print("\n")
for i in df4.index:
print(i,end = ' ') #输出index
print("\n")
for i in df4.values:
print(i) #输出values 一个values为一行,输出形式为列表
print(df4.T) #行列转置,不对df4产生更改
print(df4.学校)
print(df4["学校"]) #获取对应columns下的列
print(df4[ ["学校","2020年分数线"] ]) #获取多个columns下的值,注意中括号的数量
print(df4[2:3]) #获取对应index下的值,使用切片,这里输出 index = 2 的整一行
print(df4["学校"][2])
print(df4.at[2,"学校"]) #获取对应行列下的值
print(df4[df4["2020年分数线"]>=530]) #获取2020年分数线大于530的学校的整行,格式为DataFrame
df4["2022年分数线"] = [1,2,9999,4,5,6,7,8,9,10,11,12,13,14,15] #更改数据,若没有这一列,则追加该列,df4.只用于访问更改,不用于追加
print(df4.count()) #统计每一列的个数(为非空 即不为 NaN 的个数)
print(df4["学校"].count()) #统计该列的个数
print(df4.sum()) #计算每一列的总和
print(df4["排名"].sum()) #计算该列的总和
print(df4["排名"].mean()) #计算该列的平均数
print(df4["排名"].max())
print(df4["排名"].min()) #输出每一列的最大最小值,注:此处输出的是一个数值
print(df4["2020年分数线"].describe()) #获取该列各种各样的统计的数据,比如百分位数,平均数等等
print(df4.head())
print(df4.tail()) #返回DataFrame前n行或后n行,n默认为5
df5 = pd.DataFrame([["s2c1神班",-1,99999,99999,99999]],columns=["学校","排名","2020年分数线","2021年分数线","2022年分数线"],index = [1])
df6 = pd.DataFrame({"学校":"s2c1神班","排名":-1,"2020年分数线":99999,"2021年分数线":99999,"2022年分数线":99999},index = [1])
df7 = df4._append(df5,ignore_index = True) #在df7后面追加df5,ignore_index默认为False,若为True,则追加的df的index接续上面的index,比如df4的结尾index为15,则神班的index=16
print(df7)
df7.insert(loc = 2, column= "实力" , value = [0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,999999])
print(df7) #插入一列,插入后为第二列(从0开始编号),列标题为“实力”,注意value的个数一定等于行数
print(df7.drop(["2021年分数线"],axis = 1)) #删除列,axis = 1表示删除列,注意:此处不改变df7的数值
print(df7.drop(0)) #删除第一行数据
print(df7.drop([0,1])) #删除多行数据,注意:后续index的值不变
print(df7.sort_values(by = ["实力"])) #按照实力升序排位
print(df7.sort_values(by = ["实力"],ascending = False)) #按照实力降序排位
print(df7.sort_values(by = ["实力","排名"],ascending = False)) #先按照实力排位,若相同再按照排名排序