Pandas基础学习笔记

import pandas as pd
import numpy as np
from pandas import Series,DataFrame

1 Pandas的数据结构

(1)Series - - 类似一维数组对象
- - 创建Series:
- - ①obj = pd.Series([],index=[]) 可直接传入一个列表,则索引自动创建,范围为 [0,N-1] ,N为列表长度;或者传入一个列表和一个index=[]
- - ②obj = pd.Series({}) 传入一个字典,(index)索引则为字典的(key)键;
- - ③obj = pd.Series({},index=[]) 传入一个字典和一个index=[] ,index即已排好序的字典的键,如果有index索引与字典的键无匹配,则相应索引的键值为:NaN (Not a Number).,可用pd.isnull(obj)或obj.isnull()pd.notnull(obj)或obj.notnull() 检测缺失数据。
- - 通过索引查询操作Series:
- - ①可通过Series的values和index属性获取数组形式的values和索引obj.values obj.index
- - ②可通过查询索引类似字典的方式查询,不同的是可传入一个索引列表,以此查询多个索引。obj[1] obj[[1,2,3]]
- - ③可使用numpy的运算(布尔型数组过滤,乘法,数学函数等)obj[obj>0] obj[obj*2] np.exe(obj) 结果的索引都不变
- - ④通过index in obj 检测相应索引是否在obj中
- - ⑤可通过赋值给obj的index一个列表用来修改想修改的索引名obj.index=['相应个数的索引名']
- -关键的name属性
- - ①Series对象本身和索引都有一个name属性,对象name:obj.name='':指这个对象的名称,类似数据库的表名;索引nameobj.index.name='':指对象的所以名称,类似数据库表中属性。

(2)DataFrame - - 表格数据结构,其中数据以二维数组形式存放
- - 创建DataFrame
- - ①传入一个由等长列表或NumPy数组组成的字典,如果未指定索引会自动加上 [0,N-1] 的索引,frame = pd.DataFrame(data={});也可以加上索引frame = pd.DataFrame(data={},index=[])

data = {'country':['China','USA','Englang','Jan','Italy','France'],
        'year':[2018,2016,2017,2016,2015,2018],
        'pop':[14,9,10,2,6,8]
       }
frame = pd.DataFrame(data)
frame
    country pop year
0   China   14  2018
1   USA 9   2016
2   Englang 10  2017
3   Jan 2   2016
4   Italy   6   2015
5   France  8   2018
frame=pd.DataFrame(data,index=['one','two','three','four','five','six'])
frame
    country pop year
one China   14  2018
two USA 9   2016
three   Englang 10  2017
four    Jan 2   2016
five    Italy   6   2015
six France  8   2018
    • ②以嵌套字典的形式创建DataFrame,data={'column1':{row1:value1,row2:value2......},'column2':{row1:value,row2:value2....},.....} pandas会被解释为:外层字典的键作为列,内层键作为行索引.。某一列不存在其他列的某一行索引,值为 NaN.。另外内层字典的键(行索引)会被合并、排序形成最终的索引,若明确指定了索引,则会按顺序有选择的输出相应的行pd.DataFrame(data,index=[])
data2 = {'China':{2010:13,2018:14},'USA':{2010:10,2017:9,2018:10}}
frame2 = pd.DataFrame(data2)
frame2
    China   USA
2010    13.0    10
2017    NaN 9
2018    14.0    10
    • ③Series组成的字典创建DataFrame,行索引默认为原Series的索引(也可自己定义),列索需自定义。
pdata = {'coun_try':frame['country'],'ye_ar':frame['year']}
frame3 = pd.DataFrame(pdata)
frame3
coun_try    ye_ar
one China   2018
two USA 2016
three   Englang 2017
four    Jan 2016
five    Italy   2015
six France  2018
    • 修改,查询,操作DataFrame
    • ①若指定了列序列,则DataFrame的列就会按 columns=[] 中指定的顺序进行排列pd.DataFrame(data,columns=[column3,column2,column1]) ;若在columns中传入了一个DataFrame中不存在的列,则会自动创建那个列,列中的值均为NaN。以上均为重新创建了一个DataFrame,行index默认均为 [0,N-1],根据需要重新指定行索引pd.DataFrame(data,columns=[column3,column2,column1],index=[])
pd.DataFrame(data,columns=['year','pop','year','city'])
    year    pop year    city
0   2018    14  2018    NaN
1   2016    9   2016    NaN
2   2017    10  2017    NaN
3   2016    2   2016    NaN
4   2015    6   2015    NaN
5   2018    8   2018    NaN
pd.DataFrame(data,columns=['year','pop','year','city'],index=['one','two','three','four','five','six'])
    year    pop year    city
one 2018    14  2018    NaN
two 2016    9   2016    NaN
three   2017    10  2017    NaN
four    2016    2   2016    NaN
five    2015    6   2015    NaN
six 2018    8   2018    NaN
    • ②可以通过字典方式或 “.”(点)属性方式获取一列即为一个Series:frame.column_nameframe['column_name'] ;可以用frame['column_name']=values方法创建一个原本不存在的列.
    • ③列可以通过赋值方式给一列赋上同一个标量值或不同的一组值frame['column_name'] 或 frame.column_name=valuse ; 或赋给列一个与DataFrame 长度相等的列表或数组 frame['column_name'] 或 frame.column_name=list 或 array(numpy定义)
    • ④可以赋值一个Series,设置与需要修改数据的DataFrame相应列的行索引,会精确匹配进行修改,
test = pd.Series([修改后的值], index=[需要修改的行索引])
frame['column_name'] = test
frame2 = pd.DataFrame(data,columns=['year','country','pop','city'],
                      index=['one','two','three','four','five','six'])
test = pd.Series(['BeiJing','Tokyo','London'],index=['one','four','three'])
frame2['city']=test
frame2
year    country pop city
one 2018    China   14  BeiJing
two 2016    USA 9   NaN
three   2017    Englang 10  London
four    2016    Jan 2   Tokyo
five    2015    Italy   6   NaN
six 2018    France  8   NaN
    • ⑤ del 用来删除列 del frame['column']
    • ⑥ DataFrame同样可以定义行索引,和(columns)列索引的nameframe.index.name='value' ; frame.columns.name='value'
    • ⑦同Series,DataFrame的values属性也会以二维数组形式返回其中数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值