首页 > 其他 > 详细

机器学习pandas数据结构之DataFrame笔记

时间:2019-08-23 01:42:57      阅读:111      评论:0      收藏:0      [点我收藏+]
DataFrame输出的为表的形式,由于要把输出的表格贴上来比较麻烦,在此就不在贴出相关输出结果,代码在jupyter notebook可以顺利运行
代码中有相关解释用来加深理解方便记忆
 1 import numpy as np
 2 import pandas as pd
 3 
 4 d = {one:pd.Series([1,2,3],index=[a,b,c]),
 5      two:pd.Series([1,2,3,4],index=[a,b,c,d])}
 6 
 7 df = pd.DataFrame(d)  # 通过字典创建DataFrame,其中‘one‘列,没有‘d‘索引,所以赋值
 8                                    # 为NaN
 9 
10 df = pd.DataFrame(d, index=[d,b,a])   # 可以对原有的DataFrame再创建,选取其中
11                                                                # 的行索引,index表示行索引
12 
13 df = pd.DataFrame(d, columns=[two,three])  # 也可以对列进行操作,如果选择的列
14                                                                           # 不存在,则自动添加到下一列
15                                                                     #  并赋值为NaN,colums表示的是列索引
16 
17 d = {one:[1,2,3,4],
18      two:[21,22,23,24]}  # 字典创建的DataFrame,键表示列索引,如果没有给定行索
19                                         # 引,DataFrame会赋默认值
20 df = pd.DataFrame(d)
21 
22 data = [(1,2.2,Hello),(2,3.,World)]  # 这个列表中的两个元组将作为行值被操作
23 df = pd.DataFrame(data,index=[one,two],columns=list(ABC))
24 
25 data = [{a:1,b:2},{a:5,b:10,c:20}]  # 这个列表中的字典的键将被作为列索引
26                                                                   # 创建,每个字典分别作为行处理
27 
28 df = pd.DataFrame(data,index=[A,B],columns=[a,b,e])  
29  # 再次定义列索引时,若字典中没有对应的列将赋值为NaN,对应的列位置也将被
30 # cloums对应的列索引取代
31 
32 d = {(a,b):{(A,B):1,(A,C):2},  # 字典中最外层作为键的元组的第一个元素作为
33                                                            # 第一行的列索引,
34      (a,a):{(A,C):1,(A,B):4},  #  第二个元素作为第二行的列索引
35      (a,c):{(A,B):1,(A,C):6},  #  作为值的字典,将被作为行操作,其中作为键的
36                                                       # 元组第一个元素
37      (b,a):{(A,C):1,(A,B):8},  #  作为第一例的行索引,第二个元素作为第二列的
38                                                        # 行索引
39      (b,b):{(A,D):1,(A,B):10}}
40 df = pd.DataFrame(d)
41 
42 s = pd.Series(np.random.randn(5), index=[a,b,c,d,e])
43 pd.DataFrame(s,columns=[A],index=list(acd))  
44 # 取Series创建的表的一部分(a,c,d)
45 
46 df = pd.DataFrame(np.random.randn(6,4),columns=[one,two,three,four])
47 df[one]  # 在DataFrame中默认取列索引
48 df.loc[1]  # 用loc函数取到的是行索引的值
49 df[three] = df[one]+df[two]  # 通过索引赋值,元表改变,索引值可以相加
50 del df[three]  # 也可以删除索引值
51 df[flag] = df[one] > 0.2   # 这是布尔型索引
52 df[five] = 5  # 对列索引赋单值时,这个列对应的所有行值为所赋的那个值
53 
54 s = df.pop(four)  # pop函数取出某个列也可以用在DataFram中
55 df.insert(1,bar,df[one]+df[two])  
56 # 1表示插入在1位置,‘bar‘,插入的列名,df[‘one‘]+df[‘two‘]为列的值 df改变
57 
58 df.assign(Ratio = df[one]/df[two])  
59 # assign函数添加末列其中Ratio表示列索引,df[‘one‘]/df[‘two‘]为列值
60 # 但是df没有改变 但是df没有改变 但是df没有改变 
61 
62 df.assign(Ratio = lambda x: x.one-x.two)  
63 # x表示整个表,x.one, x.two表示对应的列值
64 
65 df.assign(ABRatio = df.one / df.two).assign(BarValue = lambda x: x.ABRatio*x.bar)  # 连续assign也可以
66 
67 df = pd.DataFrame(np.random.randint(1,10,(6,4)),index=list(abcdef),columns=list(ABCD))  
68 df[A]  # 列索引取值
69 df.loc[a]  # 行索引取值
70 df.iloc[1]  # 通过数值取行索引值
71 df[1:4]  # 通过行范围索引取值
72 df.iloc[1:4]  # 与df[1:4]效果一样
73 df.A>4  # 判断A列大于4的情况
74 df[df.A>=4]  # 索引也可以是表达式,以表的形式返回大于4的值
75 
76 df1 = pd.DataFrame(np.random.randn(10,4),index=list(abcdefghij),columns=[A,B,C,D])
77 df2 = pd.DataFrame(np.random.randn(7,3),index=list(cdefghi),columns=[A,B,C])
78 df1+df2  # 行列索引无法对应的取NaN
79 df1-df1.iloc[0]  # DataForm可以与单行相减
80 np.exp(df2)  # DataForm可以使用numpy的函数
81 np.sin(df2)
82 df2.values  # 返回的是数组
83 
84 type(df2.values)
85 # 输出numpy.ndarray
86 
87 np.asarray(df2) == df2.values
88 #输出
89 array([[ True,  True,  True],
90        [ True,  True,  True],
91        [ True,  True,  True],
92        [ True,  True,  True],
93        [ True,  True,  True],
94        [ True,  True,  True],
95        [ True,  True,  True]])

 



机器学习pandas数据结构之DataFrame笔记

原文:https://www.cnblogs.com/yang901112/p/11397325.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!