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', '
相关推荐
放飞自我的Coder27 分钟前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词
正义的彬彬侠1 小时前
【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
python·机器学习·sklearn
张小生1801 小时前
PyCharm中 argparse 库 的使用方法
python·pycharm
秃头佛爷1 小时前
Python使用PDF相关组件案例详解
python
Dxy12393102161 小时前
python下载pdf
数据库·python·pdf
叶知安1 小时前
如何用pycharm连接sagemath?
ide·python·pycharm
weixin_432702261 小时前
代码随想录算法训练营第五十五天|图论理论基础
数据结构·python·算法·深度优先·图论
菜鸟清风1 小时前
ChromeDriver下载地址
python
deephub2 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
布说在见2 小时前
魅力标签云,奇幻词云图 —— 数据可视化新境界
信息可视化·数据挖掘·数据分析