本文主要参考官方网站对pandas的介绍,加上自己的理解,有不对的地方多多包涵哈!!!
pandas模块介绍
##通常会加载以下模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
一、创建对象
1.通过列表的值创建Series
Series是pandas提供的以为数组,它类似于numpy中的Array,pandas默认会创建一个整数的索引,但也可以是字符型的索引
s = pd.Series([1,3,5,np.nan,6,8])
s
s = pd.Series([1,3,5,np.nan,6,8],[1:6]) #Series只能是一维的数组,当维数大于1时将会报错
2.通过numpy array 创建DataFrame,并带有日期索引和列标签
在pandas中有一个非常常用的函数date_range,尤其是在处理时间序列数据时,这个函数的作用就是产生一个DatetimeIndex,就是时间序列数据的索引。
函数原型pandas.date_range(start=None, end=None, periods=None, freq=’D’, tz=None, normalize=False, name=None, closed=None, **kwargs)
参数:(1)start:string或datetime-like,默认值是None,表示日期的起点。
(2)end:string或datetime-like,默认值是None,表示日期的终点。
(3)periods:integer或None,默认值是None,表示你要从这个函数产生多少个日期索引值;如果是None的话,那么start和end必须不能为None。
(4)freq:string或DateOffset,默认值是’D’,表示以自然日为单位,这个参数用来指定计时单位,比如’5H’表示每隔5个小时计算一次。
(5)tz:string或None,表示时区,例如:’Asia/Hong_Kong’。
(6)normalize:bool,默认值为False,如果为True的话,那么在产生时间索引值之前会先把start和end都转化为当日的午夜0点。
(7)name:str,默认值为None,给返回的时间索引指定一个名字。
(8)closed:string或者None,默认值为None,表示start和end这个区间端点是否包含在区间内,可以有三个值,’left’表示左闭右开区间,’right’表示左开右闭区间,None表示两边都是闭区间。
返回值:DatetimeIndex
pd.date_range(start="20130104",end="20130110") #产生时间序列数据的索引
dates = pd.date_range('20130101', periods=6) #产生6个时间序列数据的索引
dates
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD')) #dataframe是一个类似表的结构,由多个Series组成,而Series在dataframe中叫做columns
df
3.通过dict的对象来创建想series一样的Dataframe
Dataframe的行为索引index,列为labels
df2 = pd.DataFrame({
'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(4)),dtype='float32'),
'D' : np.array([3] * 4,dtype='int32'),
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })
df2
df2.dtypes #查看dataframe中每一列的类型
df2.<TAB> #如果你用的是IPython,输入df2.按下tab键会显示以下的可选属性
# df2.A df2.bool
# df2.abs df2.boxplot
# df2.add df2.C
# df2.add_prefix df2.clip
# df2.add_suffix df2.clip_lower
# df2.align df2.clip_upper
# df2.all df2.columns
# df2.any df2.combine
# df2.append df2.combine_first
# df2.apply df2.compound
# df2.applymap df2.consolidate
# df2.D
二、查看数据
1.查看数据框中的top & bottom行
df.head() #默认是查看数据框中的前5行
df.head(6) #可指定查看的行数
df.tail(3) #查看数据框中的后3行
2.查看index,colums和底层的数据
df.index #查看数据框中的索引
df.columns #查看数据框中的每一列
df.values #查看df中的值
df.describe() #统计每一列的统计量,包括计数,均值,标准差,最小值,25%分位数,75%分位数,50%中位数,最大值
df.T #转置数据框
3.排序
(1)索引排序
df.sort_index() #索引排序,默认axis=0,ascending=True,升序排序
df.sort_index(axis=1, ascending=False)# 对列进行排序,ascending=False 降序
(2)值排序
df.sort_values(by='B') #按列B的值从小排列到大,默认是升序
df.sort_values(by='B',ascending=False) #按B列的值从大排列到小
df.sort_values(by=["A","C"]) #按A,C列的值排列
三.选择数据
1.通过索引index
df['A'] #选择单列,结果产生一个Series,等价于df.A
df[0:3] #通过[],对行进行切片,选择前3行.
df['20130102':'20130104'] #通过索引进行切片
2.通过具体标签label选取列,使用datafram.loc。
有以下三种形式,
df.loc[行标签,列标签]
df.loc['a':'b'] #选取ab两行数据
df.loc[:,'one'] #选取one列的数据 df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series。
dates = pd.date_range('20130101', periods=6)
dates
dates[0] #选择dates中的第一条记录