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时间处理,datetime中的strftime/strptime+pandas.DataFrame.pivot_table(像groupby之类 的操作)

    python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.s ...

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

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

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

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

  9. Python Pandas -- DataFrame

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

随机推荐

  1. java的impl

    java impl 是一个资源包,用来存放java文件的. 在Java开发中,通常将后台分成几层,常见的是三层mvc:model.view.controller,模型视图控制层三层,而impl通常处于 ...

  2. springMVC之mvc:interceptors拦截器的用法

    1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors> <!-- 日志拦截器 --> <mvc:interceptor> ...

  3. 设置log rotation避免tomcat catalina.out文件增长过大

    创建logrotate配置文件 $ vi /etc/logrotate.d/tomcat 添加以下内容: /opt/tomcat/logs/catalina.out { copytruncate da ...

  4. C#:网络传输问题

    1.Http Post Header 中文数据值,服务端接收Header 中文数据值乱码问题: 客户端:    Encoding utf8Encoding = Encoding.GetEncoding ...

  5. 一道简单的HashMap面试题所想到的...

    前言 看到一个JDK1.7和JDK1.8中关于HashMap的一个面试题: JDK1.7和1.8中HashMap中链表的插入的方式有什么不同? 原以为自己对HashMap的源码理解的还算可以了,应该足 ...

  6. css自适应浏览器大小

    css自适应浏览器大小 1.屏幕 > 900px :显示3列 2.450px < 屏幕 < 900px :显示2列 3.屏幕 < 450px :显示1列 <!DOCTYP ...

  7. sublime text 3浅色主题

    { // Lighter theme "theme": "Material-Theme-Lighter.sublime-theme", "color_ ...

  8. hdoj:2045

    #include <iostream> using namespace std; ]; int main() { int n; a[] = ; a[] = ; a[] = ; ; i &l ...

  9. Java知多少(53)使用Java创建自己的异常子类

    尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况.这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwabl ...

  10. RDP 数据库简介

    在扩增子数据分析中,有时会发现多个OTU 注释到了同一个species ,  为什么会出现这种情况呢? 首先既然在OTU水平能分开,说明序列的相似度小于97%,  同一个物种的同一个基因的片段相似度会 ...