在Python中,pandas是基于NumPy数组构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。
使用下面格式约定,引入pandas包:
pandas有两个主要数据结构:Series和DataFrame。
Series是一种类似于一维数组的对象,它由 一组数据 (各种NumPy数据类型)以及一组与之相关的 数据标签(即索引) 组成,即index和values两部分,可以通过索引的方式选取Series中的单个或一组值。
pdSeries(list,index=[ ]) ,第二个参数是Series中数据的索引,可以省略。
Series类型索引、切片、运算的 *** 作类似于ndarray,同样的类似Python字典类型的 *** 作,包括保留字in *** 作、使用get()方法。
Series和ndarray之间的主要区别在于Series之间的 *** 作会根据索引自动对齐数据。
DataFrame是一个表格型的数据类型,每列值类型可以不同,是最常用的pandas对象。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
pdDataFrame(data,columns = [ ],index = [ ]) :columns和index为指定的列、行索引,并按照顺序排列。
如果创建时指定了columns和index索引,则按照索引顺序排列,并且如果传入的列在数据中找不到,就会在结果中产生缺失值:
数据索引 :Series和DataFrame的索引是Index类型,Index对象是不可修改,可通过索引值或索引标签获取目标数据,也可通过索引使序列或数据框的计算、 *** 作实现自动化对齐。索引类型index的常用方法:
重新索引 :能够改变、重排Series和DataFrame索引,会创建一个新对象,如果某个索引值当前不存在,就引入缺失值。
dfreindex(index, columns ,fill_value, method, limit, copy ) :index/columns为新的行列自定义索引;fill_value为用于填充缺失位置的值;method为填充方法,ffill当前值向前填充,bfill向后填充;limit为最大填充量;copy 默认True,生成新的对象,False时,新旧相等不复制。
删除指定索引 :默认返回的是一个新对象。
drop() :能够删除Series和DataFrame指定行或列索引。
删除一行或者一列时,用单引号指定索引,删除多行时用列表指定索引。
如果删除的是列索引,需要增加axis=1或axis='columns'作为参数。
增加inplace=True作为参数,可以就地修改对象,不会返回新的对象。
在pandas中,有多个方法可以选取和重新组合数据。对于DataFrame,表5-4进行了总结
适用于Series和DataFrame的基本统计分析函数 :传入axis='columns'或axis=1将会按行进行运算。
describe() :针对各列的多个统计汇总,用统计学指标快速描述数据的概要。
sum() :计算各列数据的和
count() :非NaN值的数量
mean( )/median() :计算数据的算术平均值、算术中位数
var()/std() :计算数据的方差、标准差
corr()/cov() :计算相关系数矩阵、协方差矩阵,是通过参数对计算出来的。Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。DataFrame的corr和cov方法将以DataFrame的形式分别返回完整的相关系数或协方差矩阵。
corrwith() :利用DataFrame的corrwith方法,可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名配对的相关系数。
min()/max() :计算数据的最小值、最大值
diff() :计算一阶差分,对时间序列很有效
mode() :计算众数,返回频数最高的那(几)个
mean() :计算均值
quantile() :计算分位数(0到1)
isin() :用于判断矢量化集合的成员资格,可用于过滤Series中或DataFrame列中数据的子集
适用于Series的基本统计分析函数,DataFrame[列名]返回的是一个Series类型。
unique() :返回一个Series中的唯一值组成的数组。
value_counts() :计算一个Series中各值出现的频率。
argmin()/argmax() :计算数据最大值、最小值所在位置的索引位置(自动索引)
idxmin()/idxmax() :计算数据最大值、最小值所在位置的索引(自定义索引)
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。下表对它们进行了总结,其中read_csv()、read_table()、to_csv()是用得最多的。
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。
在许多数据分析工作中,缺失数据是经常发生的。对于数值数据,pandas使用浮点值NaN(npnan)表示缺失数据,也可将缺失值表示为NA(Python内置的None值)。
替换值
replace(old, new) :用新的数据替换老的数据,如果希望一次性替换多个值,old和new可以是列表。默认会返回一个新的对象,传入inplace=True可以对现有对象进行就地修改。
删除重复数据
利用函数或字典进行数据转换
dfhead():查询数据的前五行
dftail():查询数据的末尾5行
pandascut()
pandasqcut() 基于分位数的离散化函数。基于秩或基于样本分位数将变量离散化为等大小桶。
pandasdate_range() 返回一个时间索引
dfapply() 沿相应轴应用函数
Seriesvalue_counts() 返回不同数据的计数值
dfaggregate()
dfreset_index() 重新设置index,参数drop = True时会丢弃原来的索引,设置新的从0开始的索引。常与groupby()一起用
numpyzeros()
数组、列表或元组构成的字典构造dataframe
Series构成的字典构造dataframe
字典构成的字典构造dataframe
2D ndarray 构造dataframe
字典构成的列表构造dataframe
Series构成的列表构造dataframe
字典类
Index(['a', 'b', 'c'], dtype='object')
array([[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11],
[ 4, 8, 12]], dtype=int64)
2Series构成的字典构造dataframe
3字典构成的字典构造dataframe
列表类
12D ndarray 构造dataframe
2字典构成的列表构造dataframe
31 T转置
32 通过列索引获取列数据(Series类型)
33 增加列数据
34 删除列
核心:相比于ndarray,Series是一个自带索引index的数组—>一维数组 + 对应索引,所以当只看Series的值的时候,就是一个ndarray。另外的,两者的索引切片功能差别不大,Series与dict相比,更像一个有顺序的字典(dict本身不存在字典),其索引原理和字典相似(一个用key,一个用index)
Series创建方法一:由字典创建,字典的key就是index,values就是values
d = {"a":1, "b":2, "c":3}
s = pdSeries(d)
sname = "test"
srename("test1") # 不会改变原series,返回新的Series
print(s)
1
2
3
4
5
1
2
3
4
5
方法二,通过一维数组创建
ar = ["jack", "tom", "sam"]
s = pdSeries(ar, index = list("abc")) # index可以自己定义
print(s)
1
2
3
1
2
3
方法三 通过标量创建
s = pdSeries(100, index = range(4))
print(s)
print("------------")
s = pdSeries(100, index = list(range(4)))
print(s)
print(sadd(1))
1
2
3
4
5
6
1
2
3
4
5
6
下面将介绍Series数组的索引方法
下标索引
s = pdSeries(nprandomrand(10))
print(s)
print(s[5], type(s[6]), s[7]dtype)
1
2
3
1
2
3
标签索引
s = pdSeries(nprandomrand(5), index = list("abcde"))
print(s)
print(s["a"], type(s["a"]), s["a"]dtype)
# type对应的是数据类型,dtype对应的是值的类型
print(s[["b", "a", "c"]])
#
DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。
values,columns,index,shape
若索引为汉字,有时无法检索结果
访问dataframe的列,有两种方法,返回series
访问指定行,返回series
取出某个值或修改某个值
参数:
isnull()any() -----表示此行/列 存在数据为空就为true ,若此行/列 数据都存在 则为false
notnull()all() -----表示此行/列 所有数据都存在则为true,否则为false
how='any' ----表示此行/列 存在空数据时删除
how='all' ----表示此行/列 全为空数据时删除
函数内部参数:
列多层索引与行多层索引相似
merge 与 concat 的区别在于,merge 需要依据共同的一行或列进行合并
使用 pdmerge() 进行合并时,会自动根据两者相同 column 名称的那一列,作为key 来进行合并
若列名相同列的数据不同,则取其公共部分:
若列名相同列的数据存在一对多个的情况,则展示多个;
在多对多进行合并时,每一个数据都没有放过
当存在多列相同时,指定key为哪列
只保留两者都有的 key (默认模式)
how = 'outer' : 空缺处补 NaN
以上就是关于5.层次化索引全部的内容,包括:5.层次化索引、Pandas - 索引 *** 作、关于.NET Chart控件的使用-求助啊!!!!!!!!!!!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)