python数据类型之pandas—DataFrame

时间:2022-05-18 04:59:46

DataFrame定义:

DataFrame是pandas的两个主要数据结构之一,另一个是Series

—一个表格型的数据结构

—含有一组有序的列

—大致可看成共享同一个index的Series集合

DataFrame创建方式:

默认方式创建:

>>> data = {'name':['Wangdachui','Linling','Niuyun'],'pay':[4000,5000,6000]}
>>> frame = pd.DataFrame(data)
>>> frame
name pay
0 Wangdachui 4000
1 Linling 5000
2 Niuyun 6000

传入索引的方式创建:

>>> data = np.array([('Wangdachui',4000),('Linling',5000),('Niuyun',6000)])
>>> frame = pd.DataFrame(data,index = range(1,4),columns=['name','pay'])
>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
>>> frame.index
RangeIndex(start=1, stop=4, step=1)
>>> frame.columns
Index(['name', 'pay'], dtype='object')
>>> frame.values
array([['Wangdachui', ''],
['Linling', ''],
['Niuyun', '']], dtype=object)

DataFrame的基本操作:

取DataFrame对象的行和列

>>> frame
  name pay
  1 Wangdachui 4000
  2 Linling 5000
  3 Niuyun 6000

>>> frame['name']
1 Wangdachui
2 Linling
3 Niuyun
Name: name, dtype: object
>>> frame.pay
1 4000
2 5000
3 6000
Name: pay, dtype: object

取特定的行或列

>>> frame.iloc[:2,1]#取第0,1行的第1列
1 4000
2 5000
Name: pay, dtype: object
>>> frame.iloc[:1,0]#取第0行的第0列
1 Wangdachui
Name: name, dtype: object
>>> frame.iloc[2,1]#取第2行的第1列
''
>>> frame.iloc[2]#取第2行
name Niuyun
pay 6000
Name: 3, dtype: object

DataFrame对象的修改和删除

>>> frame['name']= 'admin'
>>> frame
name pay
1 admin 4000
2 admin 5000
3 admin 6000
>>> del frame['pay']
>>> frame
name
1 admin
2 admin
3 admin

DataFrame的统计功能

找最低工资和工资大于5000的人

>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
>>> frame.pay.min()
''
>>> frame[frame.pay >= '']
name pay
2 Linling 5000
3 Niuyun 6000

案例:

已知有一个列表中存放了一组音乐数据:

music_data = [("the rolling stones","Satisfaction"),("Beatles","Let It Be"),("Guns N'Roses","Don't Cry"),("Metallica","Nothing Else Matters")],请根据这组数据创建一个如下的DataFrame:

singer         song_name
1   the rolling stones         Satisfaction
2   Beatles                        Let It Be
3   Guns N'Roses       Don't Cry
4   Metallica                      Nothing Else Matters

方法如下:

>>> import pandas as pd
>>> music_data = [("the rolling stones","Satisfaction"),("Beatles","Let It Be"),("Guns N'Roses","Don't Cry"),("Metallica","Nothing Else Matters")]
>>> music_table = pd.DataFrame(music_data)
>>> music_table
0 1
0 the rolling stones Satisfaction
1 Beatles Let It Be
2 Guns N'Roses Don't Cry
3 Metallica Nothing Else Matters
>>> music_table.index = range(1,5)
>>> music_table.columns = ['singer','song_name']
>>> print(music_table)
singer song_name
1 the rolling stones Satisfaction
2 Beatles Let It Be
3 Guns N'Roses Don't Cry
4 Metallica Nothing Else Matters

DataFrame基本操作补充

DataFrame对象如下:

>>> frame
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000

(1)添加列

添加列可以直接赋值,例如给frame添加tax列:

>>> frame['tax'] = [0.05,0.05,0.1]
>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10

(2)添加行

添加行可以用loc(标签)和iloc(位置)索引,也可以用append()和concat()方法,这里用loc()方法

>>> frame.loc[5] = {'name':'Liuxi','pay':5000,'tax':0.05}
>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
5 Liuxi 5000 0.05

(3)删除对象元素

删除数据可直接用“del数据”的方式进行,但这种方式是直接对原始数据操作,不安全,可利用drop()方法删除指定轴上的数据

>>> frame.drop(5)
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
>>> frame.drop('tax',axis = 1)
name pay
1 Wangdachui 4000
2 Linling 5000
3 Niuyun 6000
5 Liuxi 5000

此时frame没有受影响

>>> frame
name pay tax
1 Wangdachui 4000 0.05
2 Linling 5000 0.05
3 Niuyun 6000 0.10
5 Liuxi 5000 0.05

(4)修改

继承上面的frame,对tax统一修改成0.03

>>> frame['tax'] = 0.03
>>> frame
name pay tax
1 Wangdachui 4000 0.03
2 Linling 5000 0.03
3 Niuyun 6000 0.03
5 Liuxi 5000 0.03

也可以直接用loc()修改

>>> frame.loc[5] = ['Liuxi',9800,0.05]
>>> frame
name pay tax
1 Wangdachui 4000 0.03
2 Linling 5000 0.03
3 Niuyun 6000 0.03
5 Liuxi 9800 0.05

python数据类型之pandas—DataFrame的更多相关文章

  1. [Python Study Notes]pandas.DataFrame.plot()函数绘图

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  2. Python数据分析之pandas基本数据结构:Series、DataFrame

    1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象. (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 ...

  3. python 数据处理学习pandas之DataFrame

    请原谅没有一次写完,本文是自己学习过程中的记录,完善pandas的学习知识,对于现有网上资料的缺少和利用python进行数据分析这本书部分知识的过时,只好以记录的形势来写这篇文章.最如果后续工作定下来 ...

  4. Python pandas DataFrame操作

    1. 从字典创建Dataframe >>> import pandas as pd >>> dict1 = {'col1':[1,2,5,7],'col2':['a ...

  5. 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现

    首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...

  6. Python之如何删除pandas DataFrame的某一/几列

    删除pandas DataFrame的某一/几列: 方法一:直接del DF['column-name']   方法二:采用drop方法,有下面三种等价的表达式: 1. DF= DF.drop('co ...

  7. Python pandas.DataFrame调整列顺序及修改index名

    1. 从字典创建DataFrame >>> import pandas >>> dict_a = {'],'mark_date':['2017-03-07','20 ...

  8. Python Pandas -- DataFrame

    pandas.DataFrame class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) ...

  9. [译]使用to_dict将pandas.DataFrame转换为Python中的字典列表

    pandas.DataFrame.to_json返回的是JSON字符串,不是字典. 可以使用to_dict进行字典转换. 使用orient指定方向. >>> df col1 col2 ...

随机推荐

  1. FREERTOS 手册阅读笔记

    郑重声明,版权所有! 转载需说明. FREERTOS堆栈大小的单位是word,不是byte. 根据处理器架构优化系统的任务优先级不能超过32,If the architecture optimized ...

  2. 一款经典的jQuery slidizle 幻灯片

    jQuery广告幻灯片进度条,水平/左右切换,垂直/上下切换,自动播放,缩略图列表切换 在线实例 默认效果 水平/左右切换 垂直/上下切换 循环 自动播放 缩略图 进度条 回调函数 使用方法 < ...

  3. C语言:链表实现的一个实例

    问题:写一个程序输入你一年看过的所有电影以及每部电影的各种信息(简化问题:每部电影只要求输入片名和评价) 链表实现: #include<stdio.h> #include<stdli ...

  4. C&plus;&plus;虚函数、虚继承、对象内存模型(转)

    参考:http://blog.csdn.net/hxz_qlh/article/details/14633361 需要注意的是虚继承.多重继承时类的大小.

  5. Java 新IO

       NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...

  6. &lbrack;Oracle AR&rsqb;Territory Flexfield

    You can use the Territory Flexfield for recording and customized reporting on your territory informa ...

  7. SQL关键字转换大写核心算法实现

    1 不跟你多废话 上代码! /// <summary> /// SQL关键字转换器 /// </summary> public class SqlConverter : IKe ...

  8. FFmpeg入门,简单播放器

    一个偶然的机缘,好像要做直播相关的项目 为了筹备,前期做一些只是储备,于是开始学习ffmpeg 这是学习的第一课 做一个简单的播放器,播放视频画面帧 思路是,将视频文件解码,得到帧,然后使用定时器,1 ...

  9. JSP &plus;&plus;&plus;SERVIET总复习

    一. JSP基础概念 软件架构 B/S架构:Browser/Server,浏览器-服务器 最大的优点就是:一次部署,处处访问. C/S架构:Client/Server,客户端-服务器 功能.事件丰富, ...

  10. Android binder学习一:主要概念

    要看得懂android代码,首先要了解binder机制.binder机制也是android里面比較难以理解的一块,这里记录一下binder的重要概念以及实现.作为备忘. 部分内容来源于网上,如有侵权. ...