http://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html
pandas 10分钟入门教程
import pandas as pd #Series 和 DataFrame 都是 Pandas库的数据结构,使用前要导入
一、 Series 简述、创建
-
Series简述和创建
-
简述
Series 可以理解为一维数组, 其一个索引index对应一个值values; 也可以看做是定长的有序字典
- 创建
S = pd.Series(data, index= index)
其中data数据类型可以有: python dict 、numpy数组和常量
A. python dict
dict 的key做索引, values做索引对应的值
B. numpy
】
C. 常量
-
操作:
-
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
-
简述和创建
-
简述:
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也有,只是改了一些。
-
操作
-
索引
#返回一个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/
转载文章受原作者版权保护。转载请注明原作者出处!