切片操作
# 从第十行到二十行的所有值,间隔为2.
s4=college[10:20:2]
print(s4)
结果:
在College中,第十行到第二十行的截图展示,可以对比看打印结果。
# 获取具体某个列的具体信息
seriesapps=college['Apps']
# 对某一列进行切片处理,获取想要的值
seriesapps[1:10:2]
//输出结果
1 2186
3 417
5 587
7 1899
9 582
Name: Apps, dtype: int64
在College中,第一行到第十行,Apps的值信息,可以对比查看输出结果:
注:要想索引值不是数值,可以查看上一篇set_index,将某个具体的值设置为索引。
copy()与drop()
# 建立数据文本,以便多次修改,利用.copy之后不影响原数据
DataFrame=iris_data[:5].copy()
# 去除掉不想显示的行数
print(DataFrame.drop(index=[1,3]))
DataFrame=iris_data[:5].copy()
# 去除掉不想要展示的列,需要借助conlumns.
DataFrame.drop(columns=["花萼宽度","花瓣宽度"])
//输出结果。去掉不想要的行,以及不想要的列
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
2 4.9 3.0 1.4 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
花萼长度 花瓣长度 类别
1 5.1 1.4 setosa
2 4.9 1.4 setosa
3 4.7 1.3 setosa
4 4.6 1.5 setosa
5 5.0 1.4 setosa
条件检索
# 将空值信息筛选出来,具体isnull和isna的区别会详加说明
df=iris_data.loc[iris_data["花萼长度"].isnull()]
print(df)
df1=iris_data.loc[iris_data["花萼长度"].isna()]
print(df1)
df2=iris_data.loc[iris_data["类别"].isnull()]
print(df2)
df3=iris_data.loc[iris_data["类别"].isna()]
print(df3)
# 筛选:不为空的前四条信息
df2=iris_data.loc[iris_data["花萼长度"].notnull()]
print(df2[:4])
# # 筛选:具体某一个字段包含具体值的前五条
df3=iris_data.loc[iris_data["花萼长度"].isin([5.0])]
print(df3[:5])
//输出结果(一一对应)
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 NaN 3.5 1.4 0.2 NaN
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 NaN 3.5 1.4 0.2 NaN
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 NaN 3.5 1.4 0.2 NaN
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 NaN 3.5 1.4 0.2 NaN
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
5 5.0 3.6 1.4 0.2 setosa
8 5.0 3.4 1.5 0.2 setosa
26 5.0 3.0 1.6 0.2 setosa
27 5.0 3.4 1.6 0.4 setosa
36 5.0 3.2 1.2 0.2 setosa
条件统计
# 打印出类别为某个值的所有字段统计
print(iris_data.loc[iris_data["类别"]=="versicolor"].count())
c1=sum(iris_data["类别"]=="setosa")
c2=sum(iris_data["类别"]=="versicolor")
c3=sum(iris_data["类别"]=="virginica")
# 直接一一输出具体的三个值
print(c1,c2,c3)
# 根据“类别”的值分别进行统计,就是所有的值都会显示出来
iris_data["类别"].value_counts()
//输出结果(一一对应,因为自己手动改动了一个值为happy,所以第三个的统计结果会出现四个值)
花萼长度 50
花萼宽度 50
花瓣长度 50
花瓣宽度 50
类别 50
dtype: int64
49 50 50
versicolor 50
virginica 50
setosa 49
happy 1
Name: 类别, dtype: int64
条件赋值
# 建立数据副本,以便多次修改
DataFrame=iris_data[:5].copy()
# 选择出想要的数据然后对其中某个字段重新赋值
DataFrame.loc[DataFrame["花萼长度"]>4.8,"类别"]="大花萼"
print(DataFrame)
# 建立数据副本,以便多次修改
DataFrame=iris_data[:5].copy()
# 选择出想要的数据然后对其所在的信息全部赋值为固定值,主要目的就是可以去除所谓的脏数据,这样更加容易将有用信息筛选出来
DataFrame.loc[DataFrame["花萼长度"]>4.8]="错误赋值"
DataFrame
//输出结果(一一对应输出)
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 4.2 3.5 1.4 0.2 happy
2 4.9 3.0 1.4 0.2 大花萼
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 大花萼
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
1 4.2 3.5 1.4 0.2 happy
2 错误赋值 错误赋值 错误赋值 错误赋值 错误赋值
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 错误赋值 错误赋值 错误赋值 错误赋值 错误赋值
条件统计
# count(非空值数)、unique(唯一值数)、top(频数最高者)、freq(最高频数)
# unique值为四,就是因为有4个不同的值。count为总行数,
iris_data["类别"].describe()
# 统计总数(非空值)
iris_data["类别"].count()
# 某个字段的最大值为多少
print(iris_data["花萼长度"].max())
# 某个字段的的最小值为多少
print(iris_data["花萼长度"].min())
# 某个字段的平均值为多少
print(iris_data["花萼长度"].mean())
# 某个字段的中值为多少
print(iris_data["花萼长度"].median())
# 统计每列的最小值
print(iris_data.min())
# 统计每列的最大值
print(iris_data.max())
# 统计每列的平均值
print(iris_data.mean())
# 统计每列的中值
print(iris_data.median())
//输出结果(一一对应)
count 150
unique 4
top versicolor
freq 50
Name: 类别, dtype: object
150
7.9
4.2
5.837333333333335
5.8
花萼长度 4.2
花萼宽度 2
花瓣长度 1
花瓣宽度 0.1
类别 happy
dtype: object
花萼长度 7.9
花萼宽度 4.4
花瓣长度 6.9
花瓣宽度 2.5
类别 virginica
dtype: object
花萼长度 5.837333
花萼宽度 3.057333
花瓣长度 3.758000
花瓣宽度 1.199333
dtype: float64
花萼长度 5.80
花萼宽度 3.00
花瓣长度 4.35
花瓣宽度 1.30
dtype: float64
# 列出不同的值,其实describe()函数都能展示
print(iris_data['类别'].unique())
# 先列出不同的值,然后再排序,默认升序排列
np.sort(iris_data["花萼长度"].unique())
# 聚合操作,可以同时运行多个函数
iris_agg=iris_data.agg(['max','min','mean','median'])
iris_agg
# 分组,可以统计出每个值统计数量
iris_groupby=iris_data.groupby(["花萼长度"])["花萼长度"].count()
iris_groupby
//输出结果(一一对应)
['happy' 'setosa' 'versicolor' 'virginica']
array([4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4,
5.5, 5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7,
6.8, 6.9, 7. , 7.1, 7.2, 7.3, 7.4, 7.6, 7.7, 7.9])
花萼长度 花萼宽度 花瓣长度 花瓣宽度 类别
max 7.900000 4.400000 6.900 2.500000 virginica
min 4.200000 2.000000 1.000 0.100000 happy
mean 5.837333 3.057333 3.758 1.199333 NaN
median 5.800000 3.000000 4.350 1.300000 NaN
# 分组,可以统计出每个值统计数量
iris_groupby=iris_data.groupby(["花萼长度"])["花萼长度"].count()
iris_groupby
# 分组,根据花萼长度进行分组,但根据的并非其数量进行统计了,而是根据类别来统计
iris_review=iris_data.groupby(['花萼长度'])['类别'].agg(['min','max'])
iris_review
# 分组,根据花萼长度进行分组,根据花瓣长度大小值进行统计
iris_review1=iris_data.groupby(['花萼长度'])['花瓣长度'].agg(['min','max'])
iris_review1