1.Pandas简介
Pandas是基于Numpy的一个开源Python库,被广泛用于快速分析数据,以及数据清洗和准备工作。
Pandas中有两类重要的数据结构,就是序列Series和数据框DataFrame。
2.Series和DataFrame数据结构
import numpy as np
import pandas as pd
s1 = pd.Series(np.array([1,2,3,4,5]))
print(s1)
print("***************")
s2 = pd.Series(np.array([1,2,3]), index=['e','b','c'])
print(s2)
3.查询数据
查询数据前五行
查询数据的末尾5行
查询指定的列
查询指定的行
查询指定的行和指定的列
多条件查询
4,统计分析
Series总和,均值,最大最小值,中位数,众数
import numpy as np
import pandas as pd
a = np.random.normal(size=10)
d1 = pd.Series(2*a+3)
d2 = np.random.f(2,4,size=10)
d3 = np.random.randint(1,100,size=10)
print(d1)
print(d2)
print(d3)
print(d1.count()) #非空元素的计算
print(d1.min()) #最小值
print(d1.max()) #最大值
print(d1.idxmin()) #最小值的位置
print(d1.idxmax()) #最大值的位置
print(d1.sum()) #求和
print(d1.mean()) #均值
print(d1.median()) #中位值
print(d1.mode()) #众数
print(d1.var()) #方差
print(d1.std()) #标准差
print(d1.describe()) #一次性输出多个描述性统计指标
#自定义一个函数,将这些指标全部汇总在一起
def stats(x):
return pd.Series([x.max(),x.min()],index=["最大值","最小值"])
print(stats(d1))
5.DataFrame:df.shape:维度
df.info:数据表的基本信息
df.dtypes:每一列数据的格式
df.columns:查询列的名称
df.corr()相关系数的求解
df.corrwith()
df.cov()协方差
pandas实现Sql操作
#pandas实现对数据的增删改查
import pandas as pd
dict = {
"Name":["LiuShunxiang","Zhangshan"],
"Sex":["M","F"],
"Age":[27,23],
"Height":[165.7,167.2],
"Weight":[61,63]
}
print(dict)
student1 = pd.DataFrame(dict)
print(student1)
dict1 = {
"Name":["Liu","Zhang"],
"Sex":["M","F"],
"Age":[27,23],
"Height":[165.7,167.2],
"Weight":[61,63]
}
student2 = pd.DataFrame(dict1)
#将Student2中的数据增加到Student1中,通过concat数据实现
student3 = pd.concat([student1,student2],ignore_index="True") #对index无视
print(student3)
#增加新的列--增加的新列没有赋值,就会出现NAN的形式
print(pd.DataFrame(student2,columns=['Age','Heihgt','Name','Sex','Weight','Score']))
#删除Student2
#del student2
#print(student2)
print("*************************")
#删除指定的行
#print(student3.drop([0]))
#查找25岁以下的学生
print(student3[student3["Age"]<25])
#删除指定的列
print(student3.drop(['Height','Weight'],axis=1))
#不论删除行还是列,都可以通过drop方法来实现,只需要设定好删除的轴即可,0删除行,1删除列。
print(student3)
#将Liu学生的身高改为173cm
student3.loc[student3['Name']=='Liu','Height']=173
print(student3)
#聚合groupby()
print(student3.groupby('Sex').mean())
print(student3.groupby(['Sex','Age']).mean())
#排序
print(student3.sort_values(by=['Sex','Age']))
#merge表的连接
merge
https://www.yiibai.com/pandas/python_pandas_merging_joining.html
6.缺失值处理
删除法:当数据中某个变量大部分值都会缺失时,可以考虑删除变量;
dropna完成。
替补法:对于连续变量,变量的分布近似或就是正态分布的话,可以用均值代替那些缺失值;
如果变量是有偏的,可以使用中位数来代替那些缺失值
对于离散变量,一般使用众数替换存在的缺失预测
fillna完成。
7.实现数据透视表的功能
8.多层索引