二、Pandas基础:DataFrame
一、DataFrame简介
- 一个表型格数的、据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
二、DataFrame创建
- DataFrame可以使用数组,列表和字典等方式进行创建
- 当DataFrame数组和列表创建时,可指定参数index(行索引)和columns(列索引),如果不指定,默认用0的列表为序列号
- 创建后的DataFrame,亦可修改行列参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import pandas as pd a = pd.DataFrame( [ [ '小红' , '小花' , '小兰' ], [ 85 , 93 , 99 ] ]) b = pd.DataFrame( [ [ '小红' , 85 ], [ '小花' , 93 ], [ '小兰' , 99 ] ], columns = [ '姓名' , '成绩' ] ) data = { 'apart' : [ '101' , '102' , '103' , '104' ], 'profits' : [ 681.5 , 125 , 15.5 , 160 ], 'year' : [ 2007 , 2010 , 2012 , 2008 ], 'months' : 8 } c = pd.DataFrame(data, index = [ 'one' , 'two' , 'three' , 'four' ]) print ( "普通列表创建:\n" , a) print ( "带列名的创建:\n" , b) print ( "字典方式创建:\n" , c) >>> 普通列表创建: 0 1 2 0 小红 小花 小兰 1 85 93 99 带列名的创建: 姓名 成绩 0 小红 85 1 小花 93 2 小兰 99 字典方式创建: apart months profits year one 101 8 681.5 2007 two 102 8 125.0 2010 three 103 8 15.5 2012 four 104 8 160.0 2008 |
三、DataFrame查询
DataFrame可以直接通过列索引名,查看或修改整列值
如果想通过行索引名查询的话,需要借助ix('行索引名')
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import pandas as pd data = { 'apart' : [ '101' , '102' , '103' , '104' ], 'profits' : [ 681.5 , 125 , 15.5 , 160 ], 'year' : [ 2007 , 2010 , 2012 , 2008 ], 'months' : 8 } c = pd.DataFrame(data, index = [ 'one' , 'two' , 'three' , 'four' ]) print ( "列索引:\n" , c[ 'year' ]) print ( "行索引:\n" , c.ix[ 'three' ]) >>> 列索引: one 2007 two 2010 three 2012 four 2008 Name: year, dtype: int64 行索引: apart 103 months 8 profits 15.5 year 2012 Name: three, dtype: object |
四、数据过滤
- dropna:丢弃(删除)有NaN的行, 可以通过阈值(how参数)的调节对缺失值的容忍度
- fillna:用指定值或者插值的方式填充缺失数据,比如: ffill或者bfill
- isnull:返回一个含有布尔值的对象,这些布尔值表示那些值是缺失值NA
- notnull:返回布尔值对象,非空位为True
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ############这里演示一个特殊的填充方式############ import pandas as pd import numpy as np a = pd.DataFrame(np.random.rand( 7 , 3 )) a.ix[: 4 , 1 ] = np.NaN a.ix[: 2 , 2 ] = np.NaN a = a.fillna({ 1 : 0.5 , 2 : - 1 , 3 : 2 }) #按照列索引进行填充 print (a) >>> 0 1 2 0 0.467758 0.500000 - 1.000000 1 0.436149 0.500000 - 1.000000 2 0.917665 0.500000 - 1.000000 3 0.473428 0.500000 0.113061 4 0.703225 0.500000 0.090117 5 0.926495 0.962959 0.005762 6 0.414894 0.753270 0.243547 进程已结束,退出代码 0 |
五、DataFrame运算
DataFrame也保留了大量Numpy的运算机制,它们在DataFrame中均可以使用。
DataFrame中默认是按照列索引进行计算的,如果要按照行索引计算,需要在方法后面设置维度参数axis=1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import pandas as pd a = pd.DataFrame( [ [ 98.5 , 89.5 , 88.5 ], [ 98.5 , 85.5 , 80.0 ], [ 70.0 , 85.0 , 60.0 ], [ 80.0 , 85.0 , 82.0 ] ], columns = [ '语文' , '数学' , '英语' ] ) print ( "原数组:\n" , a) print ( "统计结果:\n" , a.describe()) >>> 统计结果: 语文 数学 英语 count 4.000000 4.000000 4.000000 mean 86.750000 86.250000 77.625000 std 14.168627 2.179449 12.297527 min 70.000000 85.000000 60.000000 25 % 77.500000 85.000000 75.000000 50 % 89.250000 85.250000 81.000000 75 % 98.500000 86.500000 83.625000 max 98.500000 89.500000 88.500000 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步