数据分析之Pandas(三) DataFrame入门

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。

DataFrame有多种不同的创建方法:

  • Dict of 1D ndarrays, lists, dicts, or Series
  • 2-D numpy.ndarray
  • Structured or record ndarray
  • A Series
  • Another DataFrame

1. from dict of Series or dicts

DataFrame中的index与Series结构中的index是独立的。如果输入数据是一个嵌套的dict结构,系统首先会将内部的dict转化为Series。如果初始化时没有给列名赋值,列名将会默认为dict keys.

In [46]: d = {'one':pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two':pd.Ser
ies([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}

In [47]: df = pd.DataFrame(d)

In [48]: df
Out[48]:
   one  two
a  1.0  1.0
b  2.0  2.0
c  3.0  3.0
d  NaN  4.0

In [49]: pd.DataFrame(d, index=['d', 'b', 'a'])
Out[49]:
   one  two
d  NaN  4.0
b  2.0  2.0
a  1.0  1.0

In [50]: pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])
Out[50]:
   two three
d  4.0   NaN
b  2.0   NaN
a  1.0   NaN

行标和列标都可以通过index和columns属性获得。

In [51]: df.index
Out[51]: Index([u'a', u'b', u'c', u'd'], dtype='object')

In [52]: df.columns
Out[52]: Index([u'one', u'two'], dtype='object')

注:当一个column集合与dict数据同时初始化,此时column集合将取代dict数据中的key值成为DataFrame的列名。

2. from dict of ndarrays/lists

ndarrays长度必须都是一样的,如果index手动初始化,index的长度同样需要与ndarrays一样长。如果index没有手动给出,range(n-1)将默认初始化为index。

In [4]: d = {'one':[1, 2, 3, 4,], 'two':[4, 3, 2, 1,]}

In [5]: pd.DataFrame(d)
Out[5]:
   one  two
0    1    4
1    2    3
2    3    2
3    4    1

In [6]: pd.DataFrame(d, index=['a', 'b', 'c', 'd'])
Out[6]:
   one  two
a    1    4
b    2    3
c    3    2
d    4    1

3. from structured or record array

这种情况与dict of arrays一样。

In [7]: data = np.zeros((2,), dtype=[('A', 'i4'), ('B', 'f4'), ('C', 'a10')])

In [8]: data[:] = [(1,2.,'Hello'), (2, 3., 'World')]

In [9]: pd.DataFrame(data)
Out[9]:
   A    B      C
0  1  2.0  Hello
1  2  3.0  World

In [10]: pd.DataFrame(data, index=['first', 'second'])
Out[10]:
        A    B      C
first   1  2.0  Hello
second  2  3.0  World

In [11]: pd.DataFrame(data, columns=['C', 'A', 'B'])
Out[11]:
       C  A    B
0  Hello  1  2.0
1  World  2  3.0

4. from a list of dicts

In [12]: data2 = [{'a':1, 'b':2}, {'a':5, 'b':10, 'c':20}]

In [13]: pd.DataFrame(data2)
Out[13]:
   a   b     c
0  1   2   NaN
1  5  10  20.0

In [14]: pd.DataFrame(data2, index=['first', 'second'])
Out[14]:
        a   b     c
first   1   2   NaN
second  5  10  20.0

In [15]: pd.DataFrame(data2, columns=['a', 'b'])
Out[15]:
   a   b
0  1   2
1  5  10

5. from a Series

DataFrame的index与Series的index一致,如果没有其他column名称给出,DataFrame的column值与Series的一致。

In [16]: s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])

In [17]: s
Out[17]:
a    1
b    2
c    3
dtype: int64

In [18]: pd.DataFrame(s, columns=['one'])
Out[18]:
   one
a    1
b    2
c    3

其他DataFrame初始化和操作请参考http://pandas.pydata.org/pandas-docs/version/0.18.1/dsintro.html

posted @ 2016-10-20 15:03  晋好林  阅读(28486)  评论(0编辑  收藏  举报
作者:jinhaolin
出处:http://www.cnblogs.com/jinhaolin/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件咨询.