Pandas使用说明

Pandas

一、介绍

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

二、Series的使用(pandas一维数组)

一维数组创建Series

arr = np.array([1,2,4.4])
#传入numpy数组
series01= pd.Series(arr)
#改下标值
series01.index = ['a','b','c']

print(series01)
print("-"*20)

series03 = pd.Series([1,2,3,4],index = ['a','b','c','d'])
print(series03)

print("-"*20)

在这里插入图片描述

字典方式创建Series

a_dict= {'2017':5,'34':545}

#传入字典,
series02 = pd.Series(a_dict)
print(series02)

在这里插入图片描述

Series的取值、筛选、运算

#取值,如同数组
print(series02['2017'])
print("-"*20)

#根据条件筛选series值
a = series02[series02>100]
print(a)

print("-"*20)

#运算同numpy运算
print(series02/10)

在这里插入图片描述

Series应用NumPy数组运算

#求e的幂函数
series01 = pd.Series([1,2,3,4])
np.exp(series01)

在这里插入图片描述

Series缺失值的检测

scores = pd.Series({"Tom":89,"John":88,"Zone":34})
print(scores)
print("-"*20)
new_index = ["John","Tom","ML","Zone"]
#对比字典的值是否缺失,传入一个标准索引序列
scores = pd.Series(scores,index=new_index)
print(scores)

在这里插入图片描述

Series自动对齐运算

#不同的Series运算根据索引自动对齐,做运算
p= pd.Series([1,2,3,4],index=['a','b','c','d'])
d= pd.Series([1,2,3,4],index=['a','c','b','d'])
p_sum = p * d
print(p_sum)

在这里插入图片描述

Series索引的name属性

#Series对象本身及索引有name属性
p.name = "ProductNum"
p.index.name = "productType"
p

在这里插入图片描述

Series索引对象

#Series索引
print(series03)
print("-"*20)
#根据下标字符串选取内容
print(series03['b':'c'])

在这里插入图片描述

三、DataFrame(二维数组)

二维数组创建DataFarme

#DataFrame 相当于一个表,二维数组
#方式一
df01 = pd.DataFrame([['Tom','Mark','John'],[76,98,100]])
#方式二
df01 = pd.DataFrame([['Tom',76],['Mark',98],['John',100]])
df01

在这里插入图片描述
在这里插入图片描述

numpy 转化为 DataFrame数据

arr = np.array([['Tom',76],['Mark',98],['John',100]])
print(arr)
print("-"*20)
df03 = pd.DataFrame(arr,columns=['name','score'])
print(df03)

在这里插入图片描述

字典方式创建DataFrame

data = {"apart":['1002',"1001","1003"],
       "profits":[257,43,34],
       "year":[34,324,4]}
df = pd.DataFrame(data)
print(df)
print(df.columns)
 - List item
print(df.index)
print("-"*20)
#添加下标名称
df.index=['one','two','three']
print(df)

在这里插入图片描述

DataFrame索引对象

#DataFrame索引
print()
#按列选择
print(df['year'])
print("-"*20)

#选取第几行的
print(df01.loc[0])
print("-"*20)
print(df.loc["one"])

在这里插入图片描述

添加一列空元素

#添加一列,设置为空
df['pdn'] = np.NaN
df

在这里插入图片描述

常用数学的统计方法

方法说明
count非NA值的数量
describe方法针对Series或各DataFrame列计算总统计
min/max计算最小值、最大值
argmin、argmax计算能够获取到最小值和最大值的索 引位置(整数)
idxmin、idxmax计算最小值、最大值
quantile计算样本的分位数(0到1)
sum值的总和 mean 值的平均数
median值的算术中位数(50%分位数)
mad根据平均值计算平均绝对离差
var样本数值的方差
std样本值的标准差
cumsum样本值的累计和
cummin、cummax样本值的累计最小值、最大值
cumprod样本值的累计积
Pct_change计算百分数变化
df.describe()

在这里插入图片描述

相关系数与协方差

链接: 概念理解.

df = pd.DataFrame({"GDP":[12,23,45,78,56],'air_temperature':[23,25,26,27,30]},index=['2010','2002','2003','2004','2005'])
print(df)


print("-"*20)
#相关系数
print(df.corr())

print("-"*20)
#协方差
print(df.cov())

print("-"*20)
#单个协方差与相关系数,与其他的关系
print(df['GDP'].cov(df['air_temperature']))
print("-"*20)
print(df['GDP'].corr(df['air_temperature']))

print("-"*20)

#多个因素与单个因素的相关系数
series= pd.Series([13,13.3,13.5,13.6,13.7],index=['2001','2002','2003','2004','2005'])
df.corrwith(series)

在这里插入图片描述

唯一值与值计数以及成员资格

ser = pd.Series(['a','b','c','a','c','e'])
df = pd.DataFrame({'orderId':['1001','1002','1003','1004'],'memberId':['a1001','b1002','a1001','a1001']})
#唯一值
print(ser.unique())
print(df['memberId'].unique())

print("-"*20)
#统计元素出现的个数
print(ser.value_counts(ascending =False))

print("-"*20)

#成员资格,是否包含b,c,并确定位置
mask = ser.isin(['b','c'])
print(mask)
ser[mask]

在这里插入图片描述

处理缺失数据

df = pd.DataFrame([['Tom',np.nan,45.1,'M'],[np.nan,np.nan,np.nan],['Merry',3.4,15,np.NaN],['John',23,np.NaN,'M'],
                   ['Joe',18,34.5,'F']],columns=['name','age','salary','gender'])
print(df)

#判断是否为空
df.isnull()
df.notnull()

print("-"*20)

series = pd.Series([1,2,3,4,np.NaN,5])

#删除空元素
print(series.dropna())

print("-"*20)

print(df.dropna())#有空的值都删除

print("-"*20)

print(df.dropna(how='all'))#删除所有空的值

#填充缺失元素
df.fillna(0)

在这里插入图片描述
在这里插入图片描述

DataFrame层次化

df = pd.DataFrame({'year':['2001','2001','2002','2002','2003'],
                   'fruit':['apple','banan','apple','banana','apple'],
                   'profits':[1,2,3,45,5]
                  })
print(df)
new_df = df.set_index(['year','fruit'])#依次设置层次化的排列
new_df.index

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值