pandas:DataFrame入门



# 11.21   DataFrame入门

# coding:utf-8

import numpy as np
import pandas as pd

#先创建一个时间索引,所谓的索引(index)就是每一行数据的ID,可以标识每一行的唯一值
dates = pd.date_range('20171121',periods=6)
print dates
# DatetimeIndex(['2017-11-21', '2017-11-22', '2017-11-23',
# '2017-11-24','2017-11-25', '2017-11-26'],dtype='datetime64[ns]', freq='D')


#为了快速入门,我们看一下如何创建一个6X4的数据:randn函数用于创建随机数,参数标示行数和
#列数,dates是上一步创建的索引列
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
print df
#               A         B         C         D
#2017-11-21  1.199444 -0.587739 -1.284239  0.628793
#2017-11-22  0.284111 -1.659375  0.614215  0.359175
#2017-11-23  1.445404  1.354422 -1.065202  0.293943
#2017-11-24  1.134573  0.723428 -1.240231  1.006472
#2017-11-25  2.091592  0.615116  0.420853 -0.394245
#2017-11-26  0.964422 -0.840615  0.810898 -0.150593


#我们还可以使用字典来创建数据框,例如创建一个名为A的数据框,索引是自动创建的整数
df2 = pd.DataFrame({'A':np.random.randn(6),})
print df2
#          A
#0 -1.167953
#1  1.991190
#2 -0.153903
#3  1.872350
#4  0.373224
#5  0.374733


#这又是一个字典创建DataFrame的例子
df2 = pd.DataFrame({'A':pd.Timestamp('20171121'),
                    'B':pd.Series(1),
                    })
print df2
#           A  B
#0 2017-11-21  1


#假如字典内的数据长度不同,以最长的数据为准,比如B列有4行:
df2 = pd.DataFrame({'A':pd.Timestamp('20171121'),
                    'B':pd.Series(1,index=list(range(4))),
                    })
print df2
#           A  B
#0 2017-11-21  1
#1 2017-11-21  1
#2 2017-11-21  1
#3 2017-11-21  1

#可以用dtypes来查看各行的数据格式
print df2.dtypes
#A    datetime64[ns]
#B             int64
#dtype: object


#接着看一下如何查看数据框中的数据,看一下所有的数据
print df

#使用head查看前几行数据(默认是前五行),不过可以指定前几行
print df.head(3)

#用tail查看后5行数据
print df.tail(5)

#查看数据框的索引
print df.index
#DatetimeIndex(['2017-11-21', '2017-11-22', '2017-11-23', '2017-11-24',
#               '2017-11-25', '2017-11-26'],
#              dtype='datetime64[ns]', freq='D')


#查看列名用columns
print df.columns
# Index([u'A', u'B', u'C', u'D'], dtype='object')

#查看数据值,用values
print df.values
#[[  5.18549548e-01   2.51793323e-01  -4.96886555e-01   1.18048148e+00]
# [ -9.80442170e-01   5.16076095e-01   7.49757089e-01  -6.17529673e-01]
# [  4.19993331e-01   1.74598959e+00   4.17248712e-01   2.00993751e+00]
# [ -9.87024726e-01  -6.67183444e-01  -5.76521982e-01  -1.04220119e+00]
# [  3.48839229e+00   7.11357212e-01   2.80479898e-01  -5.16312176e-01]
# [ -1.21444574e-01  -4.36551837e-01  -2.06880157e-03   7.98377457e-01]]


#查看描述性统计,用describe
print df.describe()
#            A         B         C         D
# count  6.000000  6.000000  6.000000  6.000000
# mean   0.494768 -0.289230 -0.691272  0.077464
# std    0.795101  1.023312  1.179278  0.597368
# min   -0.444882 -1.608934 -2.040045 -0.940735
# 25%   -0.158582 -1.108450 -1.487883 -0.179147
# 50%    0.607086  0.150558 -0.621352  0.260434
# 75%    0.890417  0.223112 -0.442241  0.498407
# max    1.628264  0.853263  1.294381  0.632596

#使用type看一下输出的描述性统计是什么样的数据类型--DataFrame数据
print type(df.describe())
# 

#使用T来转置数据,也就是行列转换
print df
print '*********************************'
print df.T
#                    A         B         C         D
# 2017-11-21  0.790538  0.277089 -0.995001 -0.237508
# 2017-11-22 -0.069511 -0.290848  0.044261 -0.451401
# 2017-11-23  2.485684 -1.577795 -0.620553  1.593358
# 2017-11-24  1.657990 -1.496158  0.826737 -1.676031
# 2017-11-25  0.506889 -0.986407  1.531662 -0.517018
# 2017-11-26 -0.162784  1.027782 -1.411437  0.084066
# *********************************
#    2017-11-21  2017-11-22  2017-11-23  2017-11-24  2017-11-25  2017-11-26
# A    0.790538   -0.069511    2.485684    1.657990    0.506889   -0.162784
# B    0.277089   -0.290848   -1.577795   -1.496158   -0.986407    1.027782
# C   -0.995001    0.044261   -0.620553    0.826737    1.531662   -1.411437
# D   -0.237508   -0.451401    1.593358   -1.676031   -0.517018    0.084066


#对数据进行排序,用到了sort
print df.sort_values



你可能感兴趣的:(Python)