Pandas数据处理对象Series、DataFrame_Python数据分析与可视化

Pandas数据处理对象Series、DataFrame

  • [Pandas 中的数据结构](#Pandas 中的数据结构)
  • Series
  • DataFrame
  • [CSV 格式数据的读取](#CSV 格式数据的读取)

Pandas 是为了解决数据分析任务而创建的,纳入了大量的库和标准数据模型,提供了高效地操作大型数据集所需的工具。

首先要导入 Pandas 包:

csharp 复制代码
from pandas import Series,DataFrame
import pandas as pd

Pandas 中的数据结构

  1. Series: 一维数组,类似于 Python 中的基本数据结构 list,区别是 Series 只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。就像数据库中的列数据;
  2. DataFrame: 二维的表格型数据结构。很多功能与 R 中的 data.frame 类似。可以将 DataFrame 理解为 Series 的容器;
  3. Panel:三维的数组,可以理解为 DataFrame 的容器。

Series

我们必需熟悉它的两个重要的数据结构: Series 和 DataFrame。虽然它们不是每一个问题的通用解决方案,但可以提供一个坚实的,易于使用的大多数应用程序的基础。

Series 是一个一维的类似的数组对象,包含一个数组的数据(任何 NumPy 的数据类型)和一个与数组关联的数据标签,被叫做索引 。最简单的 Series 是由一个数组的数据构成:

csharp 复制代码
In [1]:obj=Series([4,7,-5,3])
In [2]:obj
Out[2]:
0 4
1 7
2 -5
3 3

Series 的交互式显示的字符串表示形式是索引在左边,值在右边。因为我们没有给数据指定索引,一个包含整数 0 到 N-1 这里 N 是数据的长度)的默认索引被创建。你可以分别的通过它的 values 和 index 属性来获取 Series 的数组表示和索引对象:

csharp 复制代码
In [3]: obj.values
Out[3]:array([4,7,-5,3])
In [4]: obj.index
Out[4]:Int64Index([0,1,2,3])

通常,需要创建一个带有索引来确定每一个数据点的 Series。

csharp 复制代码
In [5]:obj2=Series([4,7,-5,3],index=['d','b','a','c'])
In [6]:obj2
Out[6]:
d 4
b 7
a -5
c 3

如果你有一些数据在一个 Python 字典中,你可以通过传递字典来从这些数据创建一个 Series,只传递一个字典的时候,结果 Series 中的索引将是排序后的字典的键。

csharp 复制代码
In [7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
In [8]:obj3=Series(sdata)
In [9]:obj3
Out[9]:
Ohio   35000
Texas  71000
Oregon 16000
Utah   5000

DataFrame

DataFrame 是一个表格型的数据结构,是以一个或多个二维块存放的数据表格(层次化索引),DataFrame 既有行索引还有列索引,它有一组有序的列,每列既可以是不同类型(数值、字符串、布尔型)的数据,或者可以看做由 Series 组成的字典。


创建DataFrame

csharp 复制代码
    dictionary = {'state':['0hio','0hio','0hio','Nevada','Nevada'],
             'year':[2000,2001,2002,2001,2002],
             'pop':[1.5,1.7,3.6,2.4,2.9]}
    frame = DataFrame(dictionary)

修改行名

csharp 复制代码
    frame=DataFrame(dictionary,index=['one','two','three','four','five'])

添加修改

csharp 复制代码
    frame['add']=[0,0,0,0,0]

添加 Series 类型

csharp 复制代码
    value = Series([1,3,1,4,6,8],index = [0,1,2,3,4,5])
    frame['add1'] = value

添加新列

csharp 复制代码
    1、直接在后面新增一列
    指明列名,并赋值即可:
    data['列名']=[1,2]
    2、在指定位置新增一列
    用insert()函数,data.insert(位置,列名,列值),例如:
    data.insert(2,'c','')

CSV 格式数据的读取

csharp 复制代码
# Reading a csv into Pandas.
# 如果数据集中有中文的话,最好在里面加上 encoding = 'gbk' ,以避免乱码问题。后面的导出数据的时候也一样。
df = pd.read_csv('uk_rain_2014.csv', header=0)

这里我们从 csv 文件里导入了数据,并储存在 DataFrame 中。这一步非常简单,你只需要调用 read_csv 然后将文件的路径传进去就行了。
header 关键字告诉 Pandas 哪些是数据的列名。如果没有列名的话就将它设定为 None

数据导入 pandas 之后,我们该怎么查看数据呢?

查看前 n 行

csharp 复制代码
# Getting first x rows.
df.head(5)

查看后 n 行

csharp 复制代码
# Getting last x rows.
df.tail(5)

查看总行数

csharp 复制代码
# Finding out how many rows dataset has.
len(df)

修改列名

我们通常使用列的名字来在 Pandas 中查找列。这一点很好而且易于使用,但是有时列名太长,我们需要缩短列名。

csharp 复制代码
    # Changing column labels.
    df.columns = ['water_year','rain_octsep','outflow_octsep','rain_decfeb', 'outflow_decfeb', '
相关推荐
LZXCyrus11 分钟前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
Enougme14 分钟前
Appium常用的使用方法(一)
python·appium
懷淰メ19 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm33 分钟前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
每天吃饭的羊1 小时前
python里的数据结构
开发语言·python
卡卡_R-Python1 小时前
UCI Heart Disease Data Set—— UCI 心脏病数据集介绍
python·plotly·django·virtualenv·pygame
饮长安千年月1 小时前
浅谈就如何解出Reverse-迷宫题之老鼠走迷宫的一些思考
python·网络安全·逆向·ctf
好看资源平台2 小时前
网络爬虫——爬虫项目案例
爬虫·python
豌豆花下猫2 小时前
Python 潮流周刊#78:async/await 是糟糕的设计(摘要)
后端·python·ai