自学Python——Pandas

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))

猜你喜欢

转载自blog.csdn.net/u011446177/article/details/79498747