Pandas —–简述 Series和DataFrame

http://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

pandas 10分钟入门教程

import pandas as pd #Series 和 DataFrame 都是 Pandas库的数据结构,使用前要导入

一、 Series 简述、创建

  1. Series简述和创建

  2. 简述

Series 可以理解为一维数组, 其一个索引index对应一个值values; 也可以看做是定长的有序字典

  • 创建

S = pd.Series(data, index= index)

其中data数据类型可以有: python dict 、numpy数组和常量

A. python dict

dict 的key做索引, values做索引对应的值

B. numpy

C. 常量

  1. 操作:

  2. Series部分属性

index和values属性

import pandas as pd
data = ['jordan', 'james', 'kobe']
se1 = pd.Series(data, index=range(3))
print se1.index
print se1.values

name属性, 索引的name属性

se1.name = 'rank_number'
se1.index.name = 'num'
se1.index = ['No1', 'No.2', 'No.3']           #修改索引
  • Series部分方法
pd.isnull()            # 检查是额否有NaN(缺失值),返回一个Series,数据为boolean
排序:
pd.Series.sort_index()  # 按照索引排序
pd.Series.order()          # 按 值 排序, 有任何缺失值时,放到Series尾部
  • 索引、切片
se2 = pd.Series(np.arange(5), index = list('apple'))
se2['p']                     # 索引, 索引值为'p'的都会列出来
se2['a':'l']                 # 切片, 与Python和numpy切片不同,  Series "非数值" 切片是 "包前又包后的"(满嘴顺口溜也考不上研!!Doge)
se2[: 3]                                          #切片,  通过数值切片依旧是 "包前不包后"
  • 重新索引

Series的reindex方法重新索引, 由下图看出来reindex方法是复制了原始的Series,并没有改变原始数据

se1 = pd.Series(['a', 'aa', 'aaa'], index=[1,2,3])
se1.reindex([1,2,3,4])                     # 当索引对应的数据为空时,默认NaN填充
se1.reindex(['1','2','3','4'])             # 当改变索引的数据类型时  int -> string 时,对应数据也会改变
se1.reindex([1,2,3,4],fill_value=0)        # fill_values参数,设置缺失值

还有几种缺失值填充的参数:
        # ffill / pad                     # 向前填充/搬运 值
        # bfill / backfill                # 向后填充/搬运 值

二、DataFrame

  1. 简述和创建

  2. 简述:

DataFrame是一种含有行索引、列索引的表格类型的数据结构, 其每列都是不同的值类型。

  • 创建:

A. 单层字典创建:

import pandas as pd
play_info = {
    "name": ['jordan', 'james', 'kobe', 'johnson', 'shark'],
    'club': ['Bulls', 'Heat', 'Lakers', 'Lakers', 'Lakers'],
    'position':['sg', 'sf', 'sg', 'pg', 'c'],
    'number': ['23', '6', '24', '32', '33']
}
p_df = pd.DataFrame(play_info)     # 未指定index行索引,默认添加有序索引; 如果没有指定column列索,那么列序是随机。如下图所示;
若创建DataFrame时, play_info 中的数据有缺失值, 会自动使用NaN填充,这就不举例了
print p_df
p_df = pd.DataFrame(play_info, columns=['name', 'number', 'club', 'position'])  # 指定列索引columns顺序
p_df = pd.DataFrame(play_info, columns=['name', 'number', 'club', 'position'], index=['one', 'two', 'three', 'four', 'five'])  #显示指定行索引

B. 嵌套字典创建:

data2 = {
    'nevada' : {
        2001 : 2.4,
        2002 : 2.9
    },
    'ohio':{
        2000 : 1.5,
        2001 : 1.7,
        2002 : 3.6
    }
}
df1 = pd.DataFrame(data2)  # 嵌套字典创建,没有显示指定index时, 内层字典 的key 会被合并、排序
print df1

C. 先创建DataFrame数据,再使用 index和columns属性指定

DataFrame.index = []            # 增加行索引  /   修改行索引
DataFrame.columns = []          # 增加列索引  /   修改列索引          (如下图就是修改行、列索引)
  • 属性:

name属性

df.index.name =
df.columns.name =
df.values    # 返回 DataFrema的数据为 ndarray类型
  • DataFrame() 构造函数可以接收的数据类型

2nd- array 数据矩阵 数组、列表和元组组成的字典

字典每个key在DataFrame中为一列

numpy的结构化数组

类似”数组组成的字典”

Series组成的字典

每个Series在DataFrame中为一列,未显示之指定索引,会合并

字典组成的字典(嵌套字典, 如上例所示)

每个内层字典成为一列,内层字典的key被合并,行列索引未指定则合并

字典或Series的列表

各项成一行。 字典key/ series索引的并集 成为DataFrame 的 columns

由列表/元组组成的列表

类似 2nd-array

另一个 DataFram

该DataFrame 的index未显示指定时, 沿用

Numpy的 MaskedArray

类似 2nd-array, 只是掩码值在结果DataFrame中成为缺失值 NaN

上述表格在《利用Python进行数据分析》P123页也有,我只是改了一部分(按我的理解)

  • 索引对象

DataFrame的索引对象不支持修改,保证了多个数据结构之间的安全共享

index对象还有多个

Index

广义的Index,由Python object组成的numpy数组

Int64Index

整数数组特殊的Index

MultiIndex

“层次化”索引对象

DatetimeIndex

时间戳,Numpy的datetime类型表示

PeriodIndex

时间间隔数据的特殊Index

注:上述表格《利用Python进行数据分析》P125也有,只是改了一些。

  1. 操作

  2. 索引

#返回一个Series
p_df['name']                     # 如下第一个图

#如下图2
DataFrame.iloc[int_num]          # 行索引数据类型为  int 时,使用iloc 。   int_num为索引整数值   (基于数字)
DataFrame.loc['str']             # 列索引数据类型为  string 时,使用loc。  str为索引具体的值     (基于字符串)
#如下图3
DataFrame.ix[[rows_index], [col_index]]        # ix  基于标签索引,

Original: https://www.cnblogs.com/HankCui/p/11032738.html
Author: hankcui
Title: Pandas —–简述 Series和DataFrame

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/559885/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球