导入导出数据

在导入,导出DataFrame数据时,会用到各种格式,分为 to_csv ;to_excel;to_hdf;to_sql;to_json;to_msgpack ;to_html;to_gbq ;to_stata;to_clipboard;to_pickle

可参照IO Tools分类。

输出指定colums是,会用到arg colums,例如

to_csv(filename,columns=["col1","col2"],......)
# 此处注意的是要使用双引号,单引号不起效果,不知道为什么,另外
# index,header设置为False会不写入行号(索引好)和列标
#也可如下方式使用list函数
to_csv(filename,columns = list('col1','col2'),......)

如果想要保存为ascii文本则可以使用to_csv,可以对是否保存索引(行号)等参数进设置。

调换colums顺序

若原始数据是这样的:

In [6]: df
Out[6]:
0 1 2 3 4 mean
0 0.445598 0.173835 0.343415 0.682252 0.582616 0.445543
1 0.881592 0.696942 0.702232 0.696724 0.373551 0.670208
2 0.662527 0.955193 0.131016 0.609548 0.804694 0.632596
3 0.260919 0.783467 0.593433 0.033426 0.512019 0.436653
4 0.131842 0.799367 0.182828 0.683330 0.019485 0.363371
5 0.498784 0.873495 0.383811 0.699289 0.480447 0.587165
6 0.388771 0.395757 0.745237 0.628406 0.784473 0.588529
7 0.147986 0.459451 0.310961 0.706435 0.100914 0.345149
8 0.394947 0.863494 0.585030 0.565944 0.356561 0.553195
9 0.689260 0.865243 0.136481 0.386582 0.730399 0.561593 In [7]: cols = df.columns.tolist() In [8]: cols
Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']

通过调换columns更改顺序

In [12]: cols = cols[-1:] + cols[:-1]
In [13]: cols
Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]

进而可以达到如下效果

In [16]: df = df[cols]  #    OR    df = df.ix[:, cols]

In [17]: df
Out[17]:
mean 0 1 2 3 4
0 0.445543 0.445598 0.173835 0.343415 0.682252 0.582616
1 0.670208 0.881592 0.696942 0.702232 0.696724 0.373551
2 0.632596 0.662527 0.955193 0.131016 0.609548 0.804694
3 0.436653 0.260919 0.783467 0.593433 0.033426 0.512019
4 0.363371 0.131842 0.799367 0.182828 0.683330 0.019485
5 0.587165 0.498784 0.873495 0.383811 0.699289 0.480447
6 0.588529 0.388771 0.395757 0.745237 0.628406 0.784473
7 0.345149 0.147986 0.459451 0.310961 0.706435 0.100914
8 0.553195 0.394947 0.863494 0.585030 0.565944 0.356561
9 0.561593 0.689260 0.865243 0.136481 0.386582 0.730399

参考来源

pandas DataFrame 中指定位置数据的修改:

df['one']['second'] = value
# 由于DataFrame在索引数据是得到的是副本copy所以,此时原数据df并没有修改,并会抛出警告Warning: SettingWithCopy df.loc['one','second'] = value
#如上会修改原数据df
#或是:
dfmi.loc[:,('one','second')] = value

具体参考SettingWithCopy

pandas DataFrame & Series 遍历数据(loop iterate on data)

DataFrame

 dates = pd.date_range("",periods=3)
df = pd.DataFrame(np.random.randn(3,4),index = dates,columns=['A','B','C','D'])
df
dates = pd.date_range("",periods=3)
df = pd.DataFrame(np.random.randn(3,4),index = dates,columns=['A','B','C','D'])
df
Out[36]:
A B C D
2015-01-01 -0.888495 -0.983042 0.162524 -0.768370
2015-01-02 0.954982 0.777860 -0.635805 -0.271617
2015-01-03 1.778827 1.052819 0.090116 -1.822029
  1. DataFrame.iteritems()    :Iterator over (column name, Series) pairs.

     for colName,colSeries in df.iteritems():
    print colName
    print colSeries
     A
    2015-01-01 -0.888495
    2015-01-02 0.954982
    2015-01-03 1.778827
    Freq: D, Name: A, dtype: float64
    B
    2015-01-01 -0.983042
    2015-01-02 0.777860
    2015-01-03 1.052819
    Freq: D, Name: B, dtype: float64
    C
    2015-01-01 0.162524
    2015-01-02 -0.635805
    2015-01-03 0.090116
    Freq: D, Name: C, dtype: float64
    D
    2015-01-01 -0.768370
    2015-01-02 -0.271617
    2015-01-03 -1.822029
    Freq: D, Name: D, dtype: float64
  2. DataFrame.iterrows()    :Iterate over the rows of a DataFrame as (index, Series) pairs. 数据一致是对列来说的,所以此方法迭代时数据类型会改变,如果想使用原始数据类型,最好使用itertuples,且速度快于Itetuples.
     for index,rowSeries in df.iterrows():
    print index
    print rowSeries
     2015-01-01 00:00:00
    A -0.888495
    B -0.983042
    C 0.162524
    D -0.768370
    Name: 2015-01-01 00:00:00, dtype: float64
    2015-01-02 00:00:00
    A 0.954982
    B 0.777860
    C -0.635805
    D -0.271617
    Name: 2015-01-02 00:00:00, dtype: float64
    2015-01-03 00:00:00
    A 1.778827
    B 1.052819
    C 0.090116
    D -1.822029
    Name: 2015-01-03 00:00:00, dtype: float64

     

  3. DataFrame.itertuples(index=True)    :Iterate over the rows of DataFrame as tuples, with index value as first element of the tuple.
     for rowTuple in df.itertuples():
    print rowTuple[0]
    print rowTuple[1:]
     2015-01-01 00:00:00
    (-0.88849501182393553, -0.98304167749573845, 0.1625244406175089, -0.76836987403165646)
    2015-01-02 00:00:00
    (0.95498214900986345, 0.77786021238601544, -0.635805031818656, -0.27161684716624435)
    2015-01-03 00:00:00
    (1.7788269763069902, 1.0528194112440166, 0.09011643978723563, -1.82202928954011)

Series

  1. Series.iteritems()                           :Lazily iterate over (index, value) tuples

     In [51]:
    
     s = pd.Series(['a','b','c','d','e'])
    s
    s = pd.Series(['a','b','c','d','e'])
    s
    Out[51]:
    0 a
    1 b
    2 c
    3 d
    4 e
    dtype: object
     for index,value in s.iteritems():
    print index,value
    0 a
    1 b
    2 c
    3 d
    4 e

pandas的札记的更多相关文章

  1. pandas基础-Python3

    未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...

  2. 10 Minutes to pandas

    摘要   一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型   十.画图      十一 ...

  3. 利用Python进行数据分析(15) pandas基础: 字符串操作

      字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...

  4. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...

  5. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  6. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  7. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  8. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  9. pandas.DataFrame对行和列求和及添加新行和列

    导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...

随机推荐

  1. bootstrap注意事项(三)

    1.<code> 标签用于表示计算机源代码或者其他机器可以阅读的文本内容.软件代码的编写者已经习惯了编写源代码时文本表示的特殊样式.<code> 标签就是为他们设计的.包含在该 ...

  2. phpcms-v9 --- 如何通过{pc}标签获取全站文章内容?

    1.phpcms-v9默认情况下只能根据catid获取当前栏目及子栏目下的文章,但是有时候我们需要如何通过{pc}标签来获取全站文章内容的需求,应该怎么做呢? 第一步:在content_tag.cla ...

  3. objective -c こだわり

    You make an object by creating an instance of a particular class. You do this by allocating the obje ...

  4. SiKuli 图形脚本语言【转载】

    Sikuli 是一种新颖的图形脚本语言,或者说是一种另类的自动化测试技术.它与我们常用的自动化测试技术(工具)有很大的区别. 当你看到上图sikuli的脚本时,一定会惊呼,这样都可以~!脚本加截图~~ ...

  5. Ajax与C#应用详细实例

    实现刷新的方法主要是Ajax,本文档实现Ajax有两个方法(Jquery 和 W3C的JS方法):其次,使用JS也可以实现刷新数据不刷新页面(详见其他刷新页面方法JS实现):对于CallbackRef ...

  6. 转: ES6异步编程:Thunk函数的含义与用法

    转: ES6异步编程:Thunk函数的含义与用法 参数的求值策略 Thunk函数早在上个世纪60年代就诞生了. 那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好.一个争论的焦点是&quo ...

  7. 从零开始学 iOS 开发的15条建议

    事情困难是事实,再困难的事还是要每天努力去做是更大的事实. 因为我是一路自学过来的,并且公认没什么天赋的前提下,进步得不算太慢,所以有很多打算从零开始的朋友会问我,该怎么学iOS开发.跟粉丝群的朋友交 ...

  8. 柯南君:看大数据时代下的IT架构(6)消息队列之RabbitMQ--案例(Publish/Subscribe起航)

    二.Publish/Subscribe(发布/订阅)(using the Java Client) 为了说明这个模式,我们将构建一个简单的日志系统.它将包括两个项目: 第一个将发出日志消息 第二个将接 ...

  9. poj1862---变形虫(贪心)

    题意:两条虫之间碰在一起,质量变为2*sqrt(m1*m2) 求怎么结合,能使最后的一只虫质量最小 分析:如果让按从大到小的顺序依次结合,可以使大的数被开方的次数最多,得到的结果更小 4 3 2 1 ...

  10. IOS深入学习(3)之Control Object

    1 前言 今天我们来简单的学习一下IOS中用户点击屏幕后的事件处理,其中主要介绍一下Control Object,内容如下. 2 详述 Control是处于当用户用某种方式操作进行发送消息给另一个界面 ...