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', '
相关推荐
Kai HVZ几秒前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神3 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师3 分钟前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
m0_748244836 分钟前
StarRocks 排查单副本表
大数据·数据库·python
B站计算机毕业设计超人12 分钟前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
路人甲ing..15 分钟前
jupyter切换内核方法配置问题总结
chrome·python·jupyter
游客52026 分钟前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
每天都要学信号1 小时前
Python(第一天)
开发语言·python
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
咸鱼桨1 小时前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派