0.简介
“Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。”——百度百科
1.初识Pandas
1.1引包
import pandas
import numpy
1.2读取csv文件
data=pandas.read_csv('1.csv',encoding='gbk')
print(data)
print(data.dtypes)
1.3基本数据结构
# 直接取出来的数据放入的是DataFrame
print(type(data))
# DataFrame的某几列--->成为Series
print(type(data["id"]))
# DataFrame的某几行--->仍然是DataFrame
print(type(data.loc[0:3]))
# DataFrame的某几列的某几行--->成为Series
print(type(data["id"].loc[0:3]))
print(data.columns)
print(data.shape)
2.可视化显示部分数据
data.head() # 默认前五行
data.head(3)# 也可以指定默认前几行
data.tail() #默认显示后五行
# 指定显示某一行
print(data.loc[1])
data.loc[1]
# 指定某几行
data.loc[1:3]
data.loc[[1,3,5]]
# 取出 指定行 指定列 的值
data.loc[1,"性别"]
# 取出指定的列
print(data["id"])
print(data[["id","性别"]])
# 获取满足条件的某些数据
print(data[data["年龄"]>30])
3.操作字段名
list_title=data.columns.tolist()
print(list_title)
print(type(list_title))
# 对存储所有字段的list进行操作后,可获取指定的列
print(data[list_title])
4.基本操作
4.1四则运算
与numpy一样,都是对整体进行操作
4.2函数
# 某一列的最大值,最小值,排序
print(data["年龄"].max())
print(data["年龄"].min())
# 求均值(会自动过滤掉 那些有缺失值的数据,进而求平均值)
print(data["年龄"].mean())
data.sort_values("年龄",inplace=True)
#第一个参数指排序的字段(默认升序),第二个参数是否替换data本身的数据(新生成一个DataFrame,并让data指向ta)
print(data)
# 第三个参数——升降序
data.sort_values("年龄",inplace=True,ascending=False)
print(data)
# 排序后,重做索引值
print(data.reset_index(drop=True))
5.截取部分数据
#取出某一列
data_tian=data["*天门冬氨酸氨基转换酶"]
print(data_tian)
#判断某一列中那些为空
data_tian_isnull=pandas.isnull( data["*天门冬氨酸氨基转换酶"])
#print(data_tian_isnull)
#将为空的数据取出
data_tian__null=data_tian[data_tian_isnull]
#print(data_tian__null)
# 判断有多少是为空的数据
#print(len(data_tian__null))
# 取出非空的数据
data_is_not_null=data_tian[data_tian_isnull==False]
# 判断非空的数据的平均值
print(sum(data_is_not_null)/len(data_is_not_null))
# pandas在求平均值时会自动过滤到那些没有值的数据
print(data_tian.mean())
6.求出表中某些字段(values)与指定字段(index)之间在某方面(aggfunc)的对应关系
print(data.pivot_table(index="性别",values="*天门冬氨酸氨基转换酶",aggfunc=numpy.mean))
print(data.pivot_table(index="性别",values="年龄",aggfunc=numpy.mean))
7.处理“空数据”
#取出某一列
data_tian=data["*天门冬氨酸氨基转换酶"]
print(data_tian)
# 可以根据需求将某些值drop掉 axis=0 表示去掉有空数据的行
print(data_tian.dropna(axis=0))
# 可以根据需求,去掉在某些列(subset=)上为空的数据的行
print(data.dropna(axis=0,subset=["*天门冬氨酸氨基转换酶"]))
# 可以根据需求去掉某些存在 空数据的 某些列
print(data.dropna(axis=1))
8.apply函数
8.1定义一个函数,该函数只有一个参数 参数的类型为: 一个集合(DataFrame)
def get_first_Column(column):
colu_1=column.loc[0]
return colu_1
8.2可以直接调用集合(DataFrame)本身的apply函数,来调用自定义函数
data_first=data.apply(get_first_Column)
print(data_first)
8.3 例子一枚
统一集合各个字段为空数据的个数
def isnull_count(column):
is_null=pandas.isnull(column)
data_is_null=column[is_null]
return len(data_is_null)
data_is_null=data.apply(isnull_count)
print(data_is_null)
9.Series
9.1介绍
DataFrame 的子结构 series
DataFrame 是series的集合 ,series是数据的集合
series是DataFrame的某一列或某几列。相当于是numpy中的ndarray
from pandas import Series
School_Data=pandas.read_csv('yxxx.csv',encoding='gbk')
print(type(School_Data))
School_Data_code=School_Data["院校代码"]
School_Data_name=School_Data["院校名称"]
# print(School_Data_code)
# print(School_Data_name)
print(type(School_Data_code))
9.2手动的构造一个Series
步骤:
①引包from pandas import Series,
②获取两个ndarray(其中一个当索引,也可以没有索引使用默认的)
School_Data_code_values=School_Data_code.values
School_Data_name_values=School_Data_name.values
print(type(School_Data_code_values))
school_infor=Series(School_Data_name_values,index=School_Data_code_values)
#print(school_infor)
9.3获取指定的数据
在指明了索引的情况下可以采用指定的索引来定位具体的数据,也可以根据默认的索引获取指定的数据
# 采用的是系统指定的索引
print(school_infor['10186'])
print(school_infor[['10186','10001']])
# 使用的是默认的索引
print(school_infor[0:3])
9.4重构 Series的索引
可以对Series的索引进行排序,然后重新定义Series的索引
#1.获取旧Series的索引
school_index=school_infor.index.tolist()
print(type(school_index))
# 2.对索引进行排序
school_index_sort=sorted(school_index)
# 3.重新设置Series的索引
school_infor_sort=school_infor.reindex(school_index_sort)
# print(school_infor_sort)
以上的步骤可以采用Series中的函数来处理
print(school_infor.sort_index())
当然也可以针对Series的值进行排序
print(school_infor.sort_values())
Series可以转换成numpy中的ndarray来处理
print(help(numpy.add))