废话不说,直接上干货

一、数据结构

  (1)Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。Series如今能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series中。
  (2)Time- Series:以时间为索引的Series。
  (3)DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。
  (4)Panel :三维的数组,可以理解为DataFrame的容器。

二、基本用法

  1.创建Series对象:类似于一维数组的对象,下面通过list来构建Series

    注意:Series由数据和索引构成:索引在左边,数据在右边,索引是自动创建的

er_obj =pd.Series(range(,))   #
print('type(ser_obj):\n',type(ser_obj)) #pandas的数据类型是:<class 'pandas.core.series.Series'>
print('ser_obj=\n',ser_obj) type(ser_obj): <class 'pandas.core.series.Series'>
ser_obj=
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
dtype: int64

  2.获取数据的值和索引:

print(ser_obj)   #显示所有的数据

0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19

print(type(ser_obj))  #显示数据类型   <class 'pandas.core.series.Series'>
print(ser_obj.values) #打印出数据的value值 [10 11 12 13 14 15 16 17 18 19]
print(type(ser_obj.values)) #打印出values的值的数据类型 <class 'numpy.ndarray'> print(ser_obj.index) #打印出所有的索引对象 #RangeIndex(start=0, stop=10, step=1)
print(type(ser_obj.index)) #打印出所有索引对象的类型 <class 'pandas.core.indexes.range.RangeIndex'> print(ser_obj.items()) <zip object at 0x000000000B8DEAC8>
print(type(ser_obj.items())) <class 'zip'>

  3.预览数据

print(ser_obj.head())

0 10
1 11
2 12

看看head()的源码

def head(self, n=5):默认情况下是前5行
"""
Return the first `n` rows. 返回前n行   这个函数是返回基于位置对象的前n行,对于快速检测你对象中是否有正确类型的数据在其中是很有用的e
This function returns the first `n` rows for the object based
on position. It is useful for quickly testing if your object
has the right type of data in it. Parameters
----------
n : int, default 5
Number of rows to select. Returns
-------
obj_head : type of caller
The first `n` rows of the caller object. See Also
--------
pandas.DataFrame.tail: Returns the last `n` rows. Examples
--------
>>> df = pd.DataFrame({'animal':['alligator', 'bee', 'falcon', 'lion',
... 'monkey', 'parrot', 'shark', 'whale', 'zebra']})
>>> df
animal
0 alligator
1 bee
2 falcon
3 lion
4 monkey
5 parrot
6 shark
7 whale
8 zebra Viewing the first 5 lines >>> df.head()
animal
0 alligator
1 bee
2 falcon
3 lion
4 monkey Viewing the first `n` lines (three in this case) >>> df.head(3)
animal
0 alligator
1 bee
2 falcon

    4.通过索引获取数据

print(ser_obj[])  #10
print(ser_obj[]) #18

    5.索引与数据的对应关系任然保持在数组运算的结果中

print(ser_obj*)

0 20
1 22
2 24
3 26
4 28
5 30
6 32
7 34
8 36
9 38

print(ser_obj[ser_obj>15])

6 16
7 17
8 18
9 19

  6.通过dict构建Series

#通过dict构建Series
year_data={:17.8,:20.1,:16.5,:19.9,:20.2,:22.6}
ser_obj2 =pd.Series(year_data)
print(ser_obj2.head()) #,默认打印前5行

2001 17.8
2002 20.1
2003 16.5
2004 19.9
2005 20.2

print(ser_obj2.index)   #打印出ser_obj2的索引

Int64Index([2001, 2002, 2003, 2004, 2005, 2006], dtype='int64')

 

  7.设置name属性

  ser_obj.name =     ser_obj.index.name =

ser_obj2.name='temp'   #将name设置为temp
ser_obj2.index.name='year'    #将索引设置为year
print(ser_obj2.head())  #打印出前5行
print(ser_obj2.name) #打印出对象的名字
print(ser_obj2.index.name) #打印出索引的名字

  8.Pandas数据结构DataFrame

    (1)类似于多维数组/表格数据

    (2)梅列数据可以是不同的数据类型

    (3)索引包括行索引和列索引

    (4)可以通过ndarray构建DataFrame

    

import numpy as np
array = np.random.rand(,)
print(array) #生成一个5行4列的(,)之间的随机数组 df_obj = pd.DataFrame(array) #将array转换为DataFrame的一个对象
print(df_obj.head())

[[0.16638712 0.7711124 0.72202224 0.2714576 ]
[0.39650865 0.01447041 0.41879748 0.27559135]
[0.46626184 0.67238444 0.72607271 0.93931229]
[0.41514637 0.23213519 0.68909139 0.83395236]
[0.84700412 0.3739937 0.64183245 0.64426823]]
0 1 2 3
0 0.166387 0.771112 0.722022 0.271458
1 0.396509 0.014470 0.418797 0.275591
2 0.466262 0.672384 0.726073 0.939312
3 0.415146 0.232135 0.689091 0.833952
4 0.847004 0.373994 0.641832 0.644268

 

    (5)通过dict构建DataFrame

# 通过dict构建dataFrame

dict_data={'A':,
'B':pd.Timestamp(''),
'C':pd.Series(,index=list(range()),dtype='float32'),
'D':np.array([]*,dtype='int32'),
'E':pd.Categorical(['python','java','C++','C#']),
'F':'ChinaHadoop'
} df_obj2 = pd.DataFrame(dict_data)
print(df_obj2.head()) 构建的结果:

A B C D E F
0 1 2019-01-01 1.0 3 python ChinaHadoop
1 1 2019-01-01 1.0 3 java ChinaHadoop
2 1 2019-01-01 1.0 3 C++ ChinaHadoop
3 1 2019-01-01 1.0 3 C# ChinaHadoop


    (6)通过列索引来获取数据(Series类型)

      df_obj[col_idx]    或者df_obj.col_obj

dict_data={'A':,
'B':pd.Timestamp(''),
'C':pd.Series(,index=list(range()),dtype='float32'),
'D':np.array([]*,dtype='int32'),
'E':pd.Categorical(['python','java','C++','C#']),
'F':'ChinaHadoop'
} df_obj2 = pd.DataFrame(dict_data)
print(df_obj2.head()) # 通过列索引来获取数据
print(df_obj2['A'])
print(type(df_obj2['A'])) #打印出索引A对应的数据类型,<class 'pandas.core.series.Series'>
print(df_obj2.A) #以另一种方式对数据进行访问

0 1
1 1
2 1
3 1
Name: A, dtype: int64
<class 'pandas.core.series.Series'>
0 1
1 1
2 1
3 1
Name: A, dtype: int64


    (7)增加列数据,类似dict添加key-value

      df_obj[new_col_idx]=data

df_obj2['G']= df_obj2['D']+
print(df_obj2)

A B C D E F G
0 1 2019-01-01 1.0 3 python ChinaHadoop 7
1 1 2019-01-01 1.0 3 java ChinaHadoop 7
2 1 2019-01-01 1.0 3 C++ ChinaHadoop 7
3 1 2019-01-01 1.0 3 C# ChinaHadoop 7

    (8)删除列

      del df_obj[col_idx]

#删除列
del(df_obj2['G'])
print(df_obj2)

A B C D E F
0 1 2019-01-01 1.0 3 python ChinaHadoop
1 1 2019-01-01 1.0 3 java ChinaHadoop
2 1 2019-01-01 1.0 3 C++ ChinaHadoop
3 1 2019-01-01 1.0 3 C# ChinaHadoop

  9.索引对象Index

    (1)Series和DataFrame中的索引都是Index对象

print(type(df_obj2))  #打印出dataFrame的索引种类  <class 'pandas.core.frame.DataFrame'>
print(type(ser_obj2)) #打印出Series的索引种类 <class 'pandas.core.series.Series'>

    (2)不可变(immutable):保证了数据的安全性

# df_obj2.index[]=   # raise TypeError("Index does not support mutable operations")
#ser_obj2.index[]= #TypeError: Index does not support mutable operations

    (3)常见的Index种类

      Index

      Int64Index

      MultiIndex,‘层级’索引

      DatatimeIndex,时间戳索引

  

python数据结构:pandas(1)的更多相关文章

  1. python之pandas学习笔记-pandas数据结构

    pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...

  2. 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础

    在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...

  3. 基于 Python 和 Pandas 的数据分析(1)

    基于 Python 和 Pandas 的数据分析(1) Pandas 是 Python 的一个模块(module), 我们将用 Python 完成接下来的数据分析的学习. Pandas 模块是一个高性 ...

  4. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  5. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  6. 「Python」pandas入门教程

    pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据. 具有行列标签的任意矩阵数据(均匀类型或不同类型) ...

  7. Python之Pandas中Series、DataFrame实践

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  8. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  9. python数据结构与算法——链表

    具体的数据结构可以参考下面的这两篇博客: python 数据结构之单链表的实现: http://www.cnblogs.com/yupeng/p/3413763.html python 数据结构之双向 ...

  10. python数据结构之图的实现

    python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...

随机推荐

  1. JUnit——单元测试步骤

    步骤: 1. New Package(一般命名为*.Test,测试类与开发类放在不同的包中)2. New JUnit Text Case(一般命名为*Test)3. 选择需要测试的方法 4. 可以下载 ...

  2. (51)LINUX应用编程和网络编程之六Linux高级IO

    3.6.1.非阻塞IO 3.6.1.1.阻塞与非阻塞 阻塞:阻塞具有很多优势(是linux系统的默认设置),单路IO的时候使用阻塞式IO没有降低CPU的性能 补充:阻塞/非阻塞, 它们是程序在等待消息 ...

  3. [CSP-S模拟测试]:bird(线段树优化DP)

    题目传送门(内部题89) 输入格式 第一行两个数$n$和$k$,分别表示小鸟的只数和$R$装弹时间.接下来$n$行,每行两个数$l,r$表示$n$只小鸟初始时的头和尾的$x$坐标. 输出格式 输出一个 ...

  4. [BZOJ4010]:[HNOI2015]菜肴制作(拓扑排序)

    题目传送门 题目描述 知名美食家小A被邀请至ATM大酒店,为其品评菜肴. ATM酒店为小A准备了N道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1.由于菜肴之间 ...

  5. php GD库简单使用和封装

    GD库创建图像步骤 <?php //1.创建画布 $width = 300; $height= 200; $image=imagecreatetruecolor($width,$height); ...

  6. 2019 ccpc 秦皇岛

    D 如果1/n是有限小数,不停乘以10,一定在有限次之后成为一个整数. 10的质因子只有2和5,只要保证分母的质因子只有2和5即可 #include <iostream> #include ...

  7. 在项目中配置PageHelper插件时遇到类型转换异常

    PageHelper是一种常用的分页工具,按照常规方法在mybatis的配置文件中整合它: <?xml version="1.0" encoding="UTF-8& ...

  8. tuple用法

    1 tuple中的元素可以直接赋给相同个数的变量 tup1 = ('asfa',234) p, q = tup1 print(p) print(q) # asfa # 参考:https://www.r ...

  9. Tensorflow Learning1 模型的保存和恢复

    CKPT->pb Demo 解析 tensor name 和 node name 的区别 Pb 的恢复 CKPT->pb tensorflow的模型保存有两种形式: 1. ckpt:可以恢 ...

  10. Android - Android 面试题集

    1.Java部分 1.1 操作系统相关 1.什么是操作系统? 2.什么是线程,什么是进程? 1.2 JDK&JVM&JRE 1.JDK & JVM & JRE分别是什么 ...