输入DataFrame构造器的数据学习心得

一、 ndarray:

>>> pd.DataFrame(np.arange(15).reshape(3,5))
    0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
>>> 

二、由数组、列表、元组组成的字典。

>>> pd.DataFrame({'a':np.array([1,2,3,4,5]),'b':list('hello'),'c':(1,3,5,7,9)})
   a  b  c
0  1  h  1
1  2  e  3
2  3  l  5
3  4  l  7
4  5  o  9
>>> 

三、由Series组成的字典。

>>> pd.DataFrame({'p1':pd.Series(['a','b','c']),'p2':pd.Series([1,2,3])})
  p1  p2
0  a   1
1  b   2
2  c   3
>>> 

>>> pd.DataFrame({'p1':pd.Series(['a','b','c'],index=['x','y','z']),'p2':pd.Series([1,2,3])})
    p1   p2
x    a  NaN
y    b  NaN
z    c  NaN
0  NaN  1.0
1  NaN  2.0
2  NaN  3.0
>>> 

四、由字典组成的字典。

>>> pd.DataFrame({
    'QU1':{'Row1':1,'Row2':2},
    'QU2':{'Row1':3,'Row2':4,'Row3':5}
    })
      QU1  QU2
Row1  1.0    3
Row2  2.0    4
Row3  NaN    5
>>> 

>>> pd.DataFrame({
    'QU1':{'Row1':1,'Row2':2},
    'QU2':{'Row1':3,'Row2':4,'Row2':5}
    })
      QU1  QU2
Row1    1    3
Row2    2    5

第二个示例中两个ROW2取了最后一个。

五、字典或者Series的列表

>>> pd.DataFrame([{'a':1,'b':2},{'a':3,'b':4}])
   a  b
0  1  2
1  3  4

>>> pd.DataFrame([{'a':1,'b':2},{'c':3,'d':4}])
     a    b    c    d
0  1.0  2.0  NaN  NaN
1  NaN  NaN  3.0  4.0
>>> 

>>> a=pd.Series(list('abcde'))
>>> b=pd.Series(range(5))
>>> pd.DataFrame([a,b])
   0  1  2  3  4
0  a  b  c  d  e
1  0  1  2  3  4
>>> 

>>> a=pd.Series(list('abcde'))
>>> b=pd.Series(range(5),index=['p1','p2','p3','p4','p5'])
>>> pd.DataFrame([a,b])
     0    1    2    3    4   p1   p2   p3   p4   p5
0    a    b    c    d    e  NaN  NaN  NaN  NaN  NaN
1  NaN  NaN  NaN  NaN  NaN  0.0  1.0  2.0  3.0  4.0
>>> 
 

六、由列表和数组组成的列表。

>>> pd.DataFrame([['a','b','c','d','e'],np.array(['a1','a2','a3','a4','a5']),list('hello')])
    0   1   2   3   4
0   a   b   c   d   e
1  a1  a2  a3  a4  a5
2   h   e   l   l   o
>>> 

七、另外一个DataFrame。

df=pd.DataFrame([['a','b','c','d','e'],np.array(['a1','a2','a3','a4','a5']),list('hello')])

>>> pd.DataFrame(df)
    0   1   2   3   4
0   a   b   c   d   e
1  a1  a2  a3  a4  a5
2   h   e   l   l   o
>>> 

>>> pd.DataFrame(df,columns=['P1','P2','P3','P4','P5'])
   P1  P2  P3  P4  P5
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN

总结:对于Series、DataFrame和字典需要仔细琢磨,特别是Series、DataFrame,涉及到索引的变换,总体原则是如果是列表[]形式的,里面的任何一项都是一行,如果是{}里面的任何一项是一列。

综合示例:

obj = """
{"name": "Wes",
 "places_lived": ["United States", "Spain", "Germany"],
 "pet": null,
 "siblings": [{"name": "Scott", "age": 30, "pets": ["Zeus", "Zuko"]},
              {"name": "Katie", "age": 38,
               "pets": ["Sixes", "Stache", "Cisco"]}]
}
"""

先把Json的字符串转换成PYTHON字典对象。

>>> import json
>>> result=json.loads(obj)
>>> result
{

'name': 'Wes',

'places_lived': ['United States', 'Spain', 'Germany'],

'pet': None,

'siblings': [{'name': 'Scott', 'age': 30, 'pets': ['Zeus', 'Zuko']},

{'name': 'Katie', 'age': 38, 'pets': ['Sixes', 'Stache', 'Cisco']}]}
>>> 
我们分析siblings这,得到用户和年龄(name,age),result是个字典。

>>> result['siblings']
[{'name': 'Scott', 'age': 30, 'pets': ['Zeus', 'Zuko']}, {'name': 'Katie', 'age': 38, 'pets': ['Sixes', 'Stache', 'Cisco']}]
>>> 

返回是个列表,看都不用看就知道,列表里面的每一项代表一行。

{'name': 'Scott', 'age': 30, 'pets': ['Zeus', 'Zuko']}这是一行

{'name': 'Katie', 'age': 38, 'pets': ['Sixes', 'Stache', 'Cisco']}这是一行

所以他的基本形式就是这样:

Scott     30    ['Zeus', 'Zuko']

katie      38    ['Sixes', 'Stache', 'Cisco']

索引应该怎么分配呢,很显然name,age,pets应该是列索引,行索引自动分配,才是正规的DataFrame。试试看。

>>> pd.DataFrame(result['siblings'])
    name  age                    pets
0  Scott   30            [Zeus, Zuko]
1  Katie   38  [Sixes, Stache, Cisco]
>>> 

符合分析的预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值