本文介绍: 主要介绍Panda数据处理的一些基础知识,如需要了解更多,可进行扩展

1. 认识 Pandas

Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记数据

Pandas 的出现主要是为了解决其他编程语言、科研环境的痛点。它是处理数据的理想工具处理数据的速度极快,使数据预处理、清洗、分析工作变得更快、更简单,被广泛应用于金融领域。处理数据一般分为3个阶段数据整理与清洗、数据分析与建模、数据可视化与制表

Pandas基于 Numpy 数组构建的,科研与其他第三方科学计算支持完美集成,专门为处理表格和混杂数据而设计,而Numpy更适合处理统一的数值数组数据。

Pandas 适用于处理以下类型的数据:

2. 安装导入 Pandas

推荐使用Anaconda安装可以参考 Anaconda 安装配置,轻轻松松上手Python安装Anaconda然后使用以下命名安装导入Pandas:

# 安装Pandas
'''Windows 按住win+R 输入 cmd,Mac 打开Terminal
conda install Pandas
pip install Pandas 
'''
import pandas as pd # 导入pandas并取别名
print(pd.__version__) # 1.5.1

3. Pandas 数据结构

Pandas 定义了两种主要数据结构:Series 和 DataFrame。

1) Series

Series 是一种类似于一维数组对象,它由一组数据(各种Numpy数据类型)以及一组与之相映射的数据标签索引)组成,即indexvalues两部分,可以通过索引方式选取Series中单个或一组值。创建Series数据的语法格式如下:

pd.Series(list,index=[])

第一个参数可以list、ndarray,也可以是DataFrame中的某一行或某一列。第二个参数是Series中数据的索引,可以省略,如果第一个参数字典,则字典的键将作为Series的索引。

import numpy as np,pandas as pd
arr1 = np.arange(3)
s1 = pd.Series(arr1)
print(s1)
''' 输出
0    0
1    1
2    2
dtype: int64
'''

由于没有数据指定索引,于是自动创建一个从0~N-1(N为数据长度)的整型索引。

Series 类型索引、切片、运算的操作类似于ndarray,也类似于Python字典类型的操作,包括保留字in操作、使用get()方法。Series 和 ndarray之间主要区别在于,Series 之间的操作根据索引自动对齐数据。

2) DataFrame

DataFrame 是一个表格型的数据类型,每列值类型可以不同,是最常用的Pandas对象。有行索引和列索引,可以被看作由Series组成的字典(共用同一个索引)。其中的数据是以一个或多个二维存放的(而不是列表字典或别的一维数据结构)。

创建DataFrame的语法格式示例如下:

# 参数columns和index指定的列、行索引
pd.DataFrame(data,columns=[],index=[])

# 示例
import pandas as pd
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],
        'year':[2000,2001,2002,2001,2002,2003],
        'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
        }
# 默认行列索引
df = pd.DataFrame(data)
print(df)
''' 输出
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
5  Nevada  2003  3.2
'''
# 指定行列索引
df = pd.DataFrame(data,columns=['year','state','pop','debt'],
                  index=['one','two','three','four','five','six'])
print(df)
''' 输出
       year   state  pop debt
one    2000    Ohio  1.5  NaN
two    2001    Ohio  1.7  NaN
three  2002    Ohio  3.6  NaN
four   2001  Nevada  2.4  NaN
five   2002  Nevada  2.9  NaN
six    2003  Nevada  3.2  NaN
'''
# 嵌套字典,外层字典的键作为列,内层字典键作为行索引
import pandas as pd 
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df)
''' 输出
       Nevada  Ohio
2001     2.4   1.7
2002     2.9   3.6
2000     NaN   1.5
'''

4. Pandas 基本功能

1) 数据索引

Series 和 DataFrame 的索引是index类型,index对象不可修改,可通过索引值标签获取目标数据,也可通过索引使序列数据库的计算、操作实现自动化对齐。索引类型index的常用方法如下:

import pandas as pd 
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df.index) # Int64Index([2001, 2002, 2000], dtype='int64')
print(df.columns) # Index(['Nevada', 'Ohio'], dtype='object')

2) 索引、选取和过滤

可以通过df.loc[]和df.iloc[]操作。

# 语法
df.loc[标签,标签]  # 第二个参数为空时,查询单个或多行的所有列。查询多列多行,则两个参数列表表示
df.iloc[位置,列位置]
# 示例
import pandas as pd 
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df)
''' 输出
      Nevada  Ohio
2001     2.4   1.7
2002     2.9   3.6
2000     NaN   1.5
'''
print(df.loc[2001,['Nevada','Ohio']]) 
print(df.iloc[0,:]) 
''' 输出
Nevada    2.4
Ohio      1.7
Name: 2001, dtype: float64
'''

3) 运算

  • 算术运算。根据行列索引,对齐后运算,运算默认产生浮点数,对齐时缺项填充NaN(空值)。除了可以使用+、-、*、/外,还可以使用Series 和DataFrame的算术方法,如add、sub、muldiv
  • 比较运算。只能比较相同索引的元素,不进行补齐,产生布尔值。

4) 排序

排序时,任何缺失默认都被放到末尾。

.sort_index(axis=0,ascending=True)

根据指定轴索引的值进行排序默认轴axis=0,ascending=True,即默认根据0轴的索引值做升序。轴axis=1为根据1轴的索引值排序,ascending=False为降序。

5. Pandas 数据分析

1) 统计分析和相关分析

适用于Series和DataFrame的基本统计分析函数如下,如果传入axis=’columns’或axis=1将按行进行运算。

2) 分组

3) Pandas 读写文本格式的数据

这些函数的选项可以划分为以下几大类:

4) 数据清洗和准备数据分析和建模,大部分时间都用在数据准备上,如加载、清洗、转换以及重塑。

5) 处理缺失数据

在数据分析缺失数据经常发生,对于数值数据,NaN(np.nan)表示缺失数据,也可将缺失值表示NA。常用函数如下:

  • .info():查看数据的信息,包括每个字段名称、非空数量、字段数据类型
  • .isnull():返回一个同样长度的值为布尔型的对象,表示哪些值时缺失的。.notnull()为其否定形式。
  • .dropna():删除缺失数据。默认删除含有缺失值的行;如果想删除含有缺失值的列,需要传入axis = 1 作为参数;如果想要删除全部缺失值的行或列,需传入how=‘all’。
  • .fillna(value, method,limit,inplace):填充缺失值。value 用于填充的值或字典({‘列2’:1,‘列2’:8,…});method 默认为ffill(向前填充),bfill(向后填充);limit为向前或者向后填充的最大填充量;inplace 默认返回新对象,修改inplace=True可以对现有对象直接修改。

6) 数据转换

import pandas as pd 
data = pd.DataFrame({'food':['bacon','pulled pork','bacon','ppastrami','corned beef','bacon','pastrami','honey ham','noba lox'],
                     'ounces':[4,3,12,6,7.5,8,3,5,6]})
meat_to_animal = {'bacon':'pig','pulled pork':'pig','pastrami':'cow','corned beef':'cow',
                  'honey ham':'pig','nova lox':'salmon'}
data['animal'] = data['food'].map(meat_to_animal) # 增加一列 animal
print(data)
''' 输出
          food  ounces animal
0        bacon     4.0    pig
1  pulled pork     3.0    pig
2        bacon    12.0    pig
3    ppastrami     6.0    NaN
4  corned beef     7.5    cow
5        bacon     8.0    pig
6     pastrami     3.0    cow
7    honey ham     5.0    pig
8     noba lox     6.0    NaN
'''

DataFrame 常用函数如下:

  • df.head():查询数据的前5行。
  • df.tail():查询数据的末尾5行。
  • pandas.cut()、pandas.qcut():基于分位数的离散化函数。
  • pandas.date_range():返回一个时间索引。
  • df.apply():沿相应轴应用函数。
  • Series.value_counts():返回不同数据的计数值。
  • df.aggregate()、df.reset_index():重新设置index。

原文地址:https://blog.csdn.net/weixin_50357986/article/details/134636066

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_6573.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注