Pandas使用说明

本文详细介绍Pandas库的基础知识和高级用法,包括一维数组Series和二维数组DataFrame的创建、运算、索引操作,以及如何处理缺失数据、进行统计分析、相关性和协方差计算等。

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

在这里插入图片描述

### 使用 Pandas 进行数据分析 Pandas 是一个强大的 Python 数据分析库,提供了灵活且高效的数据结构和数据处理工具。它主要包含两种核心数据结构:`Series` 和 `DataFrame`。 #### 核心数据结构 `Series` 是一维的数组结构,可以存储任意类型的数据,并带有索引(index)来标识每个元素。例如,可以通过字典、列表或 NumPy 数组创建 `Series` 对象。 ```python import pandas as pd # 通过字典创建 Series data = {'a': 1, 'b': 2, 'c': 3} s = pd.Series(data) print(s) ``` `DataFrame` 是二维表格型数据结构,类似于 Excel 表格或者 SQL 中的表。每列可以有不同的数据类型,并且具有行标签和列标签。 ```python # 创建 DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35] } df = pd.DataFrame(data) print(df) ``` #### 数据读取与写入 Pandas 支持多种文件格式的数据读取和写入操作,包括 CSV、Excel、JSON 等。对于没有标题的文件,可以通过参数 `header=None` 指定,并使用 `names=[]` 来自定义列名。 ```python # 读取无标题的文本文件并指定列名 f_path = r'/path/to/file.txt' read_df = pd.read_csv(f_path, sep='\t', header=None, names=['名称', '代码']) print(read_df.head()) ``` #### 数据可视化 Pandas 提供了与 Matplotlib 集成的绘图功能,可以通过简单的调用实现数据可视化。例如,绘制折线图时,默认会以索引作为 x 轴,所有列作为 y 轴。 ```python import numpy as np import matplotlib.pyplot as plt %matplotlib inline # 创建随机数据并绘制折线图 df = pd.DataFrame(np.random.randint(30, 60, size=(6, 4)), columns=list('ABCD'), index=range(6)) df.plot() plt.show() ``` #### 数据处理 Pandas 提供了许多用于数据清洗和转换的方法,如筛选、排序、分组等操作。例如,可以使用 `where` 方法进行条件过滤。 ```python # 使用 where 方法进行条件过滤 filtered_data = df.where(df > 40) print(filtered_data) ``` 此外,还可以遍历 `DataFrame` 的行来进行逐行处理。 ```python # 遍历 DataFrame 的行 for index, row in df.iterrows(): print(f"Index: {index}, Row: {row}") ``` #### 文档与资源 为了更好地掌握 Pandas使用方法,建议查阅官方文档以及相关的教程资料。这些资源通常包含了详细的函数说明、示例代码以及最佳实践指南。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值