Python 第三方模块 数据分析 Pandas模块 介绍,IO,函数

一.介绍
1.功能:

Pandas是1个强大的分析结构化数据的工具集,旨在简单/直观地处理关系型/标记型数据,主要用于数据挖掘/分析,也
提供数据清洗功能.其基于NumPy开发,可与其它第3方科学计算支持库完美集成,适用于处理以下类型的数据:
①与SQL或Excel表格类似的,含异构列的表格数据
②有序/无序(非固定频率)的时间序列数据
③带行列标签的矩阵数据,包括同构/异构型数据
④任意其它形式的观测/统计数据集,数据转入Pandas数据结构时不必事先标记
Pandas的速度相对较快,很多底层算法都用Cython优化过;不过,为了保持通用性,Pandas仍牺牲了一些性能.另外,
Pandas还是statsmodels的依赖项,因此,Pandas也是Python的统计计算生态系统的重要组成部分

2.安装:

pip install pandas

3.导入:

#通常使用pd作为别名:
import pandas as pd

4.查看版本:

>>> import pandas as pd
>>> pd.__version__
'1.1.2'

二.IO
在这里插入图片描述
1.CSV文件
(1)导入:

[<df>=]pd.read_csv(
  <filepath_or_buffer>[,cache_dates=True,chunksize=None,comment=None,compression="infer",converters=None,
  date_parser=None,dayfirst=False,decimal= ".",delimiter=None,delim_whitespace=False,dialect=None,
  doublequote=True,dtype=None,encoding=None,engine=None,error_bad_lines=True,escapechar=None,
  false_values=None,header="infer",float_precision=None,index_col=None,infer_datetime_format=False,
  iterator=False,keep_date_col=False,keep_default_na=True,lineterminator=None,
  low_memory=_c_parser_defaults["low_memory"],mangle_dupe_cols=True,memory_map=False,names=None,
  na_filter=True,na_values=None,nrows=None,parse_dates=False,prefix=None,sep=",",quotechar='"',
  quoting=csv.QUOTE_MINIMAL,skipfooter=0,skipinitialspace=False,skiprows=None,skip_blank_lines=True,
  squeeze=False,thousands=None,true_values=None,usecols=None,verbose=False,warn_bad_lines=True]
)
  #参数说明:
    filepath_or_buffer:指定要读取的文件;str/path object/file-like object
    chunksize:指定文件块的大小(行数;用于迭代读取);int
    comment:指定如何分割行结尾处注释;str
      #注释会被忽略,不会被载入
    date_parse:指定用于解析日期的函数;为function
    delimiter:指定不同列之间的分隔符;str(支持正则表达式)
      #如果指定了delimiter,则sep失效
    encoding:指定编码方式;str,默认为None
      #导入中文数据时,通常为"utf-8"
    header:指定用于指定列名的行的索引;int/int list/"infer"(手动传入,否则取要读取的首行)
    index_col:指定用于指定行标签索引的列;int/str/int sequence/str sequence/False
    keep_date_col:是否保留参与连接成日期的列;bool
    names:指定列名;为array-like,默认为文件中的列名
    na_values:指定用于替换NaN的值;为scalar/str/list-like/dict
    nrows:指定要读取的行数;int,默认读到结尾
    parse_date:指定要尝试解析为日期的列;bool(所有列/均不)/int sequence/str sequence/sequence sequence(将某些列组合起来解析)/dict
    sep:指定不同列之间的分隔符;str(支持正则表达式)
      #若sep为None,则C引擎无法检测分隔符,但Python引擎可以检测,这意味着将使用后者并通过Python的内置嗅探器csves.niffer检测分隔符
      #长度>1的分隔符将被解释为正则表达式,并强制使用Python解析引擎
    skiprows:指定要忽略的行;list-like(要忽略的行的索引)/int(要忽略前几行)/callable(传入索引,忽略则返回True,否则返回False)
    thousands:指定数字的千位分隔符;str
    df:返回DataFrame object

#实例:
>>> pd.read_csv("E:\\1.csv",encoding="gbk",sep=",")
   姓名  年龄
0  张三  18
1  李四  19
2  王五  20
>>> pd.read_csv("E:\\1.csv",encoding="gbk",sep=",",names=["a","b"])
    a   b
0  姓名  年龄
1  张三  18
2  李四  19
3  王五  20

(2)导出:

<S_or_df>.to_csv(
  [chunksize=None,columns=None,compression="infer",date_format=None,decimal=".",doublequote=True,
  encoding=None,errors="strict",escapechar=None,float_format=None,header=True,index=True,index_label=None,
  line_terminator=None,mode="w",na_rep="",path_or_buf=None,sep=",",quotechar='"',quoting=None]
)
  #参数说明:
    S_or_df:指定要导出的数据;为Series object/DataFrame object
    header:指定列名;bool(True表示使用<S_or_df>的列名)/list/str
    index:是否导出行名;bool
    path_or_buf:指定导出到的文件;str/file handle

#实例:
>>> df=pd.DataFrame([[1,2],[3,4]])
>>> df.to_csv("E:\\1.csv")
>>> pd.read_csv("E:\\1.csv")
   Unnamed: 0  0  1
0           0  1  2
1           1  3  4

2.导入文本文件:

[<df>=]pd.read_table(
  <filepath_or_buffer>[,cache_dates=True,chunksize=None,comment=None,compression="infer",converters=None,
  date_parser=None,dayfirst=False,decimal= ".",delimiter=None,delim_whitespace=False,dialect=None,
  doublequote=True,dtype=None,encoding=None,engine=None,error_bad_lines=True,escapechar=None,
  false_values=None,float_precision=None,header="infer",index_col=None,infer_datetime_format=False,
  iterator=False,keep_date_col=False,keep_default_na=True,lineterminator=None,
  low_memory=_c_parser_defaults["low_memory"],mangle_dupe_cols=True,memory_map=False,names=None,nrows=None,
  na_filter=True,na_values=None,parse_dates=False,prefix=None,quotechar='"',quoting=csv.QUOTE_MINIMAL,
  sep="\t",skipfooter=0,skipinitialspace=False,skiprows=None,skip_blank_lines=True,squeeze=False,
  thousands=None,true_values=None,usecols=None,verbose=False,warn_bad_lines=True]
)
  #参数说明:其他参数同上
    names:指定读取到的数据的列名;为array-like,默认为文件的首行
      #指定的列名数量不足时,会作为较右侧的列的列名,多余的列没有列名(见下例2)
    sep:指定不同列之间的分隔符;str,默认为"\t"(水平制表符)

#实例:
>>> pd.read_table("E:\\1.txt")
   aaa           bbb    ccc
0  asd  sklasklaksdl  mddm,
1  NaN            \t    dkd
>>> pd.read_table("E:\\1.txt",names=["qwe","rty"])
              qwe    rty
aaa           bbb    ccc
asd  sklasklaksdl  mddm,
NaN            \t    dkd

3.Excel文件
(1)导入:

[<df>=]pd.read_excel(
  <io>[,comment=None,converters=None,convert_float=True,date_parser=None,dtype=None,engine=None,
  false_values=None,header=0,index_col=None,keep_default_na=True,mangle_dupe_cols=True),names=None,
  na_filter=True,na_values=None,nrows=None,parse_dates=False,sheet_name=0,skipfooter=0,skiprows=None,
  squeeze=False,thousands=None,true_values=None,usecols=None,verbose=False]
)
  #参数说明:
    io:指定要读取的文件;str/bytes/ExcelFile/xlrd.Book/path object/file-like object
    names:指定读取到的数据的列名;为array-like,默认为文件的首行
    sheet_name:指定要读取的Sheet;str(Sheet的名字)/int(Sheet的编号)/list(读取多个Sheet)/None(读取所有Sheet),默认为0

#实例:
>>> pd.read_excel("E:\\1.xlsx")
     AAA  BBB   CCC   DDD  EEE
0  收到您们的   上的   NaN   NaN  NaN
1    NaN  NaN   大苏打   NaN   都是
2     飒飒  NaN  大是大非  的受调查   呃呃
3    NaN   飒飒   NaN  萨3属性  NaN
4    NaN   都是    得到   NaN  NaN
5    大苏打  大苏打   NaN   NaN    啊

(2)导出:

<S_or_df>.to_excel(
  [<excel_writer>,columns=None,encoding=None,engine=None,float_format=None,freeze_panes=None,header=True,
  index=True,index_label=None,inf_rep="inf",merge_cells=True,na_rep="",sheet_name="Sheet1",startcol=0,
  startrow=0,verbose=True]
)
  #参数说明:其他参数同上
    excel_writer:指定要导出到的文件;str/ExcelWriter object

三.函数
1.合并与连接:

按行合并(合并)记录集:<ndf>=pd.concat(<objs>[,axis=0,join="outer",ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=False,copy=True])
  #会得到1个新的记录集,其中包含<objs>中所有元素中的所有记录
  #参数说明:
    objs:指定要合并的记录集;为sequence/mapping(其中的元素为Series/DataFrame)
    ndf:返回合并后得到的记录;数据类型与<objs>中的元素相同

#实例:
>>> df1=pd.DataFrame([[1,2,3],[4,5,6]])
>>> df2=pd.DataFrame([[3,2,1],[6,5,4],[9,8,7]])
>>> pd.concat([df1,df2])
   0  1  2
0  1  2  3
1  4  5  6
0  3  2  1
1  6  5  4
2  9  8  7
>>> pd.concat({"A":df1,"B":df2})
     0  1  2
A 0  1  2  3
  1  4  5  6
B 0  3  2  1
  1  6  5  4
  2  9  8  7
>>> s1=pd.Series([1,2])
>>> s2=pd.Series([3,4,5])
>>> pd.concat([s1,s2])
0    1
1    2
0    3
1    4
2    5
dtype: int64
>>> pd.concat({"A":s1,"B":s2})
A  0    1
   1    2
B  0    3
   1    4
   2    5
dtype: int64

######################################################################################################################

按列合并(连接)记录集:pd.merge(<left>,<right>[,how="inner",on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=("_x","_y"),copy=True,indicator=False,validate=None])
  #会得到1个新的记录集,其中的每条记录都由<left>/<right>中指定字段(即on,称为"连接键")的值相同的2条记录合并而来
  #参数说明:
    left,right:分别指定参与合并的左/右侧的记录集;为DataFrame
    on:指定连接键;默认为<left><right>均包含的字段
      #必须同时存在于<left>和<right>中
    left_on,right_on:分别指定<left>/<right>中的连接键
      #必须同时指定
    left_index,right_index:是否使用<left>/<right>的行索引作为连接键;bool
      #使用left/right_index时,需指定right/left_index/on(为True)

#实例:
>>> df1=pd.DataFrame([[1,2,3],[4,5,6]])
>>> df2=pd.DataFrame([[3,2,1],[6,5,4],[9,8,7]])
>>> pd.merge(df1,df2)
Empty DataFrame
Columns: [0, 1, 2]
Index: []
>>> df1=pd.DataFrame([[1,2,3],[4,5,6]],columns=["a","b","c"])
>>> df2=pd.DataFrame([[1,2,3],[4,5,6]],columns=["a","d","e"])
>>> pd.merge(df1,df2)
   a  b  c  d  e
0  1  2  3  2  3
1  4  5  6  5  6
>>> df1=pd.DataFrame([[1,2,3],[1,5,6]],columns=["a","b","c"])
>>> pd.merge(df1,df2)
   a  b  c  d  e
0  1  2  3  2  3
1  1  5  6  2  3
>>> df1=pd.DataFrame([[1,2,1],[1,5,6]],columns=["a","b","c"])
>>> df2=pd.DataFrame([[1,2,3],[1,5,6]],columns=["a","b","c"])
>>> pd.merge(df1,df2,left_on="c",right_on="a")
   a_x  b_x  c_x  a_y  b_y  c_y
0    1    2    1    1    2    3
1    1    2    1    1    5    6
>>> pd.merge(df1,df2,left_index=True,right_on="a")
   a  a_x  b_x  c_x  a_y  b_y  c_y
0  1    1    5    6    1    2    3
1  1    1    5    6    1    5    6
>>> pd.merge(df1,df2,left_index=True,right_index=True)
   a_x  b_x  c_x  a_y  b_y  c_y
0    1    2    1    1    2    3
1    1    5    6    1    5    6

2.统计
(1)标准化:

对指定列进行数据标准化:(<df>.<column>-<df>.<column>.min())/(<df>.<column>.max()-<df>.<column>.min())
  #参数说明:
    df:指定DataFrame对象
    column:指定列

>>> df=pd.DataFrame([[1,2],[3,4],[5,6],[1,2],[3,1]],columns=["a","b"])
>>> scale=(df.a-df.a.min())/(df.a.max()-df.a.min())
>>> scale
0    0.0
1    0.5
2    1.0
3    0.0
4    0.5
Name: a, dtype: float64

(2)分组:

对数据集进行分组:[<out>=]pd.cut(<x>,<bins>[,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates="raise",ordered=True])
  #参数说明:
    x:指定要分组的数据集;为array-like(必须为1)
    bins:指定如何分组;int/scalar sequence/pandas.core.indexes.interval.IntervalIndex
      #为int表示将<x>中的所有元素等分为<x>份
      #为scalar sequence表示指定组与组之间的边界
      #  要求满足<bins>[0] < <bins>[1] < ... < <bins>[n]
      #  所得到的所有组为(<bins>[0],<bins>[1]],(<bins>[1],<bins>[2]]...(<bins>[n-1],<bins>[n]]
      #  不属于任何组的元素在<out>中的对应元素为NaN
      #为pandas.core.indexes.interval.IntervalIndex表示直接指定使用的组
      #  要求组与组直接不能重叠
	out:返回分组结果;为Series,其中元素为<x>中对应元素所属的组

#实例:
>>> df=pd.DataFrame([[1,2],[3,4],[5,6],[1,2],[3,1]],columns=["a","b"])
>>> pd.cut(df.a,2)
0    (0.996, 3.0]
1    (0.996, 3.0]
2      (3.0, 5.0]
3    (0.996, 3.0]
4    (0.996, 3.0]
Name: a, dtype: category
Categories (2, interval[float64]): [(0.996, 3.0] < (3.0, 5.0]]
>>> pd.cut(df.a,[-10,2,3,4])
0    (-10.0, 2.0]
1      (2.0, 3.0]
2             NaN
3    (-10.0, 2.0]
4      (2.0, 3.0]
Name: a, dtype: category
Categories (3, interval[int64]): [(-10, 2] < (2, 3] < (3, 4]]

(3)交叉分析:

创建透视表:[<pivotable>=]pd.pivot_table(data=None[,index=None,columns=None,values=None,aggfunc="mean",fill_value=None,margins=False,dropna=True,margins_name="All",observed=False])
  #长数据→宽数据;支持数据聚合;相当于<data>.pivot_table()
  #表中元素为{[(相应列的值)等于(透视表中该位置处的行和列索引)]的记录}的指定统计量
  #参数说明:
	data:指定数据来源;为DataFrame
	  #也可为位置参数
	index,columns:分别指定结果中的行/列索引;list-like
	  #即如何将数据分组,每组再根据values/aggfunc求出该组在<pivotable>中的对应元素;需要至少指定1个
	values:指定要分析的哪个列;str(data中的列名)/str list,默认自动确定
	aggfunc:指定要获得的统计量;str/function/function list/dict,默认值表示numpy.mean
	pivotable:返回分析结果;为DataFrame

#实例:
>>> df=pd.read_excel("E://1.xlsx")
>>> df
   姓名  年龄 爱好  城市
0  王五  33  A  BJ
1  张三  23  D  SH
2  李四  34  S  GZ
3  赵二  14  V  SZ
4  周十  52  D  NJ
5  韩三  21  V  HZ
>>> pd.pivot_table(df,index=df["爱好"])
      年龄
爱好
A   33.0
D   37.5
S   34.0
V   17.5
>>> pd.pivot_table(df,columns=df["爱好"])
爱好     A     D     S     V
年龄  33.0  37.5  34.0  17.5
>>> pd.pivot_table(df,index=df["爱好"],columns=df["城市"],values="年龄")
城市    BJ    GZ    HZ    NJ    SH    SZ
爱好
A   33.0   NaN   NaN   NaN   NaN   NaN
D    NaN   NaN   NaN  52.0  23.0   NaN
S    NaN  34.0   NaN   NaN   NaN   NaN
V    NaN   NaN  21.0   NaN   NaN  14.0

######################################################################################################################

创建透视表:pd.pivot(<data>,columns=None[,index=None,values=None])
  #长数据→宽数据;不支持数据聚合;参见 Python.第三方模块.数据分析.Pandas模块.DataFrame.三.3.(4) 部分

######################################################################################################################

还原透视表(逆透视):pd.melt(<frame>[,id_vars=None,value_vars=None,var_name=None,value_name="value",col_level=None,ignore_index=True])
  #宽数据→长数据;参见 Python.第三方模块.数据分析.Pandas模块.DataFrame.三.3.(4) 部分

######################################################################################################################

创建交叉表:pd.crosstab(<index>,<columns>[,values=None,rownames=None,colnames=None,aggfunc=None,margins=False,margins_name="All",dropna=True,normalize=False])
  #参数说明:
  	index,columns:指定交叉表的行/列上的分组;为array-like/Series/array list/Series list
  	margins:指定是否添加汇总行/;bool
  	margins_name:指定汇总行/列的标签;str

#实例:
>>> df=pd.DataFrame([["A",1,11],["B",2,22],["C",3,33],["D",4,44],["E",5,55],["F",6,66],["G",7,77],["H",8,88]],columns=["a","b","c"])
>>> pd.crosstab(df["a"],df["b"])
b  1  2  3  4  5  6  7  8
a
A  1  0  0  0  0  0  0  0
B  0  1  0  0  0  0  0  0
C  0  0  1  0  0  0  0  0
D  0  0  0  1  0  0  0  0
E  0  0  0  0  1  0  0  0
F  0  0  0  0  0  1  0  0
G  0  0  0  0  0  0  1  0
H  0  0  0  0  0  0  0  1
>>> pd.crosstab(df["a"],df["b"],margins=True)
b    1  2  3  4  5  6  7  8  All
a
A    1  0  0  0  0  0  0  0    1
B    0  1  0  0  0  0  0  0    1
C    0  0  1  0  0  0  0  0    1
D    0  0  0  1  0  0  0  0    1
E    0  0  0  0  1  0  0  0    1
F    0  0  0  0  0  1  0  0    1
G    0  0  0  0  0  0  1  0    1
H    0  0  0  0  0  0  0  1    1
All  1  1  1  1  1  1  1  1    8

(4)计数:

求各个值的数量:pd.value_counts(<values>[,sort=True,ascending=False,normalize=False,bins=None,dropna=True])
  #参数说明:
  	values:指定数组;为array
  	sort:是否按值对结果进行排序;bool
  	ascending:是否按升序排序;bool
  	dropna:是否求NaN的数量;bool

#实例:
>>> pd.value_counts([None,11,22,44,None,22,22,11])
22    3
11    2
44    1
dtype: int64

(5)哑变量:

将数据转换为哑变量:pd.get_dummies(<data>[,prefix=None,prefix_sep="_",dummy_na=False,columns=None,sparse=False,drop_first=False,dtype=None])
  #得到的结果称为"哑变量矩阵"(Dummy Matrix)或"指标矩阵"(Indicator Matrix)
  #参数说明:
  	data:指定数据;为array-like/Series/DataFrame
  	prefix:指定列名的前缀;None/str/str list/dict
  	prefix_sep:指定用于连接前缀的连接符;str
  	dummy_na:是否考虑NaN;bool

#实例:
>>> pd.get_dummies(["a","c","a","b","c","c"])
   a  b  c
0  1  0  0
1  0  0  1
2  1  0  0
3  0  1  0
4  0  0  1
5  0  0  1

3.数据预处理
(1)离散化:

对数据进行等距划分:pd.cut(<x>,<bins>[,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates="raise",ordered=True])
  #数据会被分入不同的区域中,每个区域中的数据使用相同的标签表示;返回pandas.core.arrays.categorical.Categorical
  #参数说明:
  	x:指定数据;为array-like/Series
  	bins:指定区间(指定区间数/区间边界);int/scalar sequence/IntervalIndex
  	right:True,则使用左开右闭区间;False,则使用左闭右开区间
  	labels:指定各个区间的标签;为array/False(0,1...)/None(使用区间本身)
  	retbins:是否返回各个区间的边界构成的array
  	  #在bins为int时很有用
  	precision:存储区间标签的精度;int
  	include_lowest:指定首区间是否包含左边界;bool
  	  #bins为int时总包含
  	duplicates:指定区间边界不唯一时如何处理;'raise'/'drop'
  	ordered:是否对结果排序;bool

#实例:
>>> pd.cut([1,2,3,4,100,200],2)
[(0.801, 100.5], (0.801, 100.5], (0.801, 100.5], (0.801, 100.5], (0.801, 100.5], (100.5, 200.0]]
Categories (2, interval[float64]): [(0.801, 100.5] < (100.5, 200.0]]
>>> pd.cut([1,2,3,4,5,6,7],[0,2,6,7],3,retbins=True)
([(0, 2], (0, 2], (2, 6], (2, 6], (2, 6], (2, 6], (6, 7]]
Categories (3, interval[int64]): [(0, 2] < (2, 6] < (6, 7]], array([0, 2, 6, 7]))
>>> pd.cut([1,2,3,4,5,6,7],3,precision=1)
[(1.0, 3.0], (1.0, 3.0], (1.0, 3.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], (5.0, 7.0]]
Categories (3, interval[float64]): [(1.0, 3.0] < (3.0, 5.0] < (5.0, 7.0]]
>>> pd.cut([1,2,3,4,5,6,7],[0,2,6,7])
[(0, 2], (0, 2], (2, 6], (2, 6], (2, 6], (2, 6], (6, 7]]
Categories (3, interval[int64]): [(0, 2] < (2, 6] < (6, 7]]
>>> pd.cut([1,2,3,4,5,6,7],[0,2,6,7],retbins=True)
([(0, 2], (0, 2], (2, 6], (2, 6], (2, 6], (2, 6], (6, 7]]
Categories (3, interval[int64]): [(0, 2] < (2, 6] < (6, 7]], array([0, 2, 6, 7]))
>>> pd.cut([1,2,3,4,5,6,7],[0,2,6,7],labels=["a","b","c"])
['a', 'a', 'b', 'b', 'b', 'b', 'c']
Categories (3, object): ['a' < 'b' < 'c']
>>> pd.cut([1,2,3,4,5,6,7],[1,6,7],include_lowest=True)
[(0.999, 6.0], (0.999, 6.0], (0.999, 6.0], (0.999, 6.0], (0.999, 6.0], (0.999, 6.0], (6.0, 7.0]]
Categories (2, interval[float64]): [(0.999, 6.0] < (6.0, 7.0]]
>>> pd.cut([1,2,3,4,5,6,7],[1,6,7])
[NaN, (1.0, 6.0], (1.0, 6.0], (1.0, 6.0], (1.0, 6.0], (1.0, 6.0], (6.0, 7.0]]
Categories (2, interval[int64]): [(1, 6] < (6, 7]]
>>> pd.cut(pd.Series([1,2,3,4,5,6,7]),[1,2,4,10])
0            NaN
1     (1.0, 2.0]
2     (2.0, 4.0]
3     (2.0, 4.0]
4    (4.0, 10.0]
5    (4.0, 10.0]
6    (4.0, 10.0]
dtype: category
Categories (3, interval[int64]): [(1, 2] < (2, 4] < (4, 10]]

######################################################################################################################

对数据进行等量划分:pd.qcut(<x>,<q>[,labels=None,retbins=False,precision=3,duplicates="raise"])
  #每个区间中的数据量大致相同;返回pandas.core.arrays.categorical.Categorical
  #参数说明:
  	q:指定区间(指定区间数/分位数);int/num list-like

#实例:
>>> pd.qcut([1,2,3,4,100,200],2)
[(0.999, 3.5], (0.999, 3.5], (0.999, 3.5], (3.5, 200.0], (3.5, 200.0], (3.5, 200.0]]
Categories (2, interval[float64]): [(0.999, 3.5] < (3.5, 200.0]]
>>> pd.qcut([1,2,3,4,100,200],[0,0.16,0.32,1])
[(0.999, 1.8], (1.8, 2.6], (2.6, 200.0], (2.6, 200.0], (2.6, 200.0], (2.6, 200.0]]
Categories (3, interval[float64]): [(0.999, 1.8] < (1.8, 2.6] < (2.6, 200.0]]

4.创建日期时间对象:

创建日期时间索引序列:pd.date_range([start=None,end=None,periods=None,freq="D",tz=None,normalize=False,name=None,closed=None,**kwargs])
  #返回pandas.core.indexes.datetimes.DatetimeIndex,其中的元素为pandas._libs.tslibs.timestamps.Timestamp
  #每2个相邻数据对象间相隔的时间都是相等的
  #参数说明:
  	start,end:指定序列的起始/结束时间;str/datetime-like
  	periods:指定序列长度(包含几个日期时间对象);int
  	freq:指定数据的频率;str(日期偏移量的别名)/DateOffset
  	  #应指定以上4个对象中的任意3个;"D"表示每天1个对象(2个相邻对象间相隔1天)
	tz:指定时区;str/tzinfo,默认为无时区(timezone-naive)
	normalize:指定在创建前将起始/结束时间调整的指定日的0;bool
	name:指定返回值的名字;str

#实例:
>>> pd.date_range(start="2001/05/09",end="2021/01/29")
DatetimeIndex(['2001-05-09', '2001-05-10', '2001-05-11', '2001-05-12',
               '2001-05-13', '2001-05-14', '2001-05-15', '2001-05-16',
               '2001-05-17', '2001-05-18',
               ...
               '2021-01-20', '2021-01-21', '2021-01-22', '2021-01-23',
               '2021-01-24', '2021-01-25', '2021-01-26', '2021-01-27',
               '2021-01-28', '2021-01-29'],
              dtype='datetime64[ns]', length=7206, freq='D')
>>> pd.date_range(start="2001/05/09",end="2021/01/29",periods=10)
DatetimeIndex(['2001-05-09 00:00:00', '2003-07-18 13:20:00',
               '2005-09-26 02:40:00', '2007-12-05 16:00:00',
               '2010-02-13 05:20:00', '2012-04-23 18:40:00',
               '2014-07-03 08:00:00', '2016-09-10 21:20:00',
               '2018-11-20 10:40:00', '2021-01-29 00:00:00'],
              dtype='datetime64[ns]', freq=None)
>>> pd.date_range('2000-01-01','2000-01-01 11:00',freq='4h')
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 04:00:00',
               '2000-01-01 08:00:00'],
              dtype='datetime64[ns]', freq='4H')
>>> pd.date_range('2000-01-01','2000-01-01 11:00',freq='1h30t')
DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00',
               '2000-01-01 03:00:00', '2000-01-01 04:30:00',
               '2000-01-01 06:00:00', '2000-01-01 07:30:00',
               '2000-01-01 09:00:00', '2000-01-01 10:30:00'],
              dtype='datetime64[ns]', freq='90T')
>>> print(pd.date_range('2000-01-01','2000-01-01 11:00',freq='1h30t').tz)#时区
None

######################################################################################################################

转换为时间戳对象:pd.to_datetime(<arg>[,errors="raise",dayfirst=False,yearfirst=False,utc=None,format=None,exact=True,unit=None,infer_datetime_format=False,origin="unix",cache=True])
  #返回pandas._libs.tslibs.timestamps.Timestamp
  #参数说明:
    arg:指定日期时间;int/float/str/datetime/list-like/Series/DataFrame/dict-like
    format:指定日期时间的格式;None(尽可能进行转换)/str(需要传入指定格式的日期时间)

#实例:
>>> pd.to_datetime("2202/3/12")
Timestamp('2202-03-12 00:00:00')
>>> pd.to_datetime("3/12/2001",format="%d/%m/%Y")
Timestamp('2001-12-03 00:00:00')
>>> pd.to_datetime("2202/3/12/32",format="%Y/%d/%m/%f")
Timestamp('2202-12-03 00:00:00.320000')
>>> pd.to_datetime("22020211063955")
Timestamp('2202-02-11 06:39:55')

######################################################################################################################

创建日期索引序列:pd.period_range([start=None,end=None,periods=None,freq=None,name=None])
  #返回pandas.core.indexes.period.PeriodIndex
  #参数说明:
    start,end:指定序列的起始/结束时间;str/Period-like
  	periods:指定序列长度(包含几个日期对象);int
  	  #应指定以上3个参数中的任意2个
  	freq:指定数据的频率;str(日期偏移量的别名)/DateOffset
  	  #若start/end为Period object,则来自start/end;否则,为"D"

#实例:
>>> pd.period_range(start="2001/01/01",end="2001/12/31",freq="M")
PeriodIndex(['2001-01', '2001-02', '2001-03', '2001-04', '2001-05', '2001-06',
             '2001-07', '2001-08', '2001-09', '2001-10', '2001-11', '2001-12'],
            dtype='period[M]', freq='M')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值