Offical Website :http://pandas.pydata.org/

一:两种基本的数据类型结构 Series 和 DataFrame

先来看一下Series

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #Series
s = pd.Series([i*2 for i in xrange(1 , 11)])
print s

打印结果为:

0     2
1 4
2 6
3 8
4 10
5 12
6 14
7 16
8 18
9 20
dtype: int64

其中。前面的0--9是索引值,后面的2,4,6...是我们传递的 list 中的值。

 

然后看一下DataFrame

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE'))
print df

运行结果:

                   A         B         C         D         E
2017-03-01 1.446957 -0.969023 -0.272529 0.695884 -0.842616
2017-03-02 -0.193140 1.231356 0.761668 -0.859277 -1.002324
2017-03-03 -0.441364 1.059026 0.392266 1.180888 0.144625
2017-03-04 0.510129 0.851746 0.110843 0.745591 -0.724988
2017-03-05 0.417613 -0.640111 -1.048320 1.605048 0.935129
2017-03-06 0.805600 0.491515 0.042078 0.081229 -0.293101
2017-03-07 -1.597687 0.268910 1.078853 -1.488760 -1.881305
2017-03-08 -2.414063 1.147526 0.143332 0.622884 1.760944

其中,第一个参数 np.random.randn(8 , 5)  会返回一个8行5列的 array , 其中的元素值为满足标准正态分布的随机数

第二个参数 index = dates (dates 是一个数组)传递了DataFrame 的索引值

第三个参数 columns = list('ABCDE') 传递了这个 DataFrame 对象每一列的标签

 

另外。DataFrame 接收的参数还可以是一个字典。key 对应列的标签,value 对应列的元素值。具体有多少行根据 每一个key 中 value 值最多的来确定

df = pd.DataFrame({'A':1,'B':[1,2,3,4]})
print df A B
0 1 1
1 1 2
2 1 3
3 1 4

可以看到。Series 是 DataFrame 中的一个组成部分,或者说是一种特殊的 DataFrame。DataFrame 又是许多 Series 的集合。

 

二:DataFrame的基本操作

df.head(n = 5)返回原 df 对象的前 n 行。n 默认为5

df.tail(n = 5)返回原 df 对象的后 n 行。n 默认为5

df.index 返回 df 对象的索引值

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE'))
#print df #Basic
print 'Head'
print df.head(3)
print 'Tail'
print df.tail(3)
print
print df.index
Head
A B C D E
2017-03-01 0.872154 0.887637 0.877745 0.170153 -0.595866
2017-03-02 -2.260319 -1.400152 -0.347347 -0.880254 -0.388510
2017-03-03 -0.032758 0.393881 -0.279599 1.904316 -1.292630
Tail
A B C D E
2017-03-06 -0.116548 -0.459674 0.671389 -0.536236 1.224103
2017-03-07 -0.067690 0.678551 -0.258071 -0.352931 0.415018
2017-03-08 0.006201 0.464584 0.141018 -0.076282 -0.638886 DatetimeIndex(['2017-03-01', '2017-03-02', '2017-03-03', '2017-03-04',
'2017-03-05', '2017-03-06', '2017-03-07', '2017-03-08'],
dtype='datetime64[ns]', freq='D')

df.values 返回 df 对象中的元素值。并且返回的对象类型是一个 numpy.ndarray

df.T 返回一个转置过的 df 对象(行列交换)

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE')) print df.values
print df.T
[[ 0.08981458  2.35966602  0.00606022  0.08633954  1.05939747]
[-1.05151225 -1.19768201 1.83672123 1.20769635 -0.30581458]
[-0.17192213 -0.75261065 1.04369857 -0.14874237 2.07925093]
[-0.94600881 0.68897204 -0.18006348 -1.39294212 -0.24695665]
[ 0.7730522 -1.62446734 -1.35308009 2.97657871 0.56537233]
[ 0.24186251 0.56652445 -0.00513021 0.14593751 0.07460181]
[-1.52712564 0.79666412 -1.68573768 0.85084609 0.48469802]
[ 1.49180784 -0.04688902 -0.89278834 -0.81667428 -0.15639693]]
2017-03-01 2017-03-02 2017-03-03 2017-03-04 2017-03-05 2017-03-06 \
A 0.089815 -1.051512 -0.171922 -0.946009 0.773052 0.241863
B 2.359666 -1.197682 -0.752611 0.688972 -1.624467 0.566524
C 0.006060 1.836721 1.043699 -0.180063 -1.353080 -0.005130
D 0.086340 1.207696 -0.148742 -1.392942 2.976579 0.145938
E 1.059397 -0.305815 2.079251 -0.246957 0.565372 0.074602 2017-03-07 2017-03-08
A -1.527126 1.491808
B 0.796664 -0.046889
C -1.685738 -0.892788
D 0.850846 -0.816674
E 0.484698 -0.156397

df.sort_values(['columns_name'] , ascending = (0/1))  排序。对指定的列(columns_name)按指定的方式( 0 降序 , 1 升序)来排序。

df.sort_index(axis = 0/1 , ascending = 0/1) 排序。可对行索引(axis = 0)和列索引(axis = 1)按照降序(ascending =0)和升序(ascending = 1)进行排序

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE')) print df.sort_values('A' , ascending = 1)
print df.sort_index(axis = 0, ascending = 0)
print df.sort_index(axis = 1, ascending = 0)
                   A         B         C         D         E
2017-03-04 -0.885580 0.668956 0.007392 0.561356 -0.214626
2017-03-05 -0.135071 -1.049060 -1.305366 0.558175 -0.087092
2017-03-08 0.188582 0.492789 -1.364214 0.504932 1.241542
2017-03-02 0.306423 -1.595937 0.532442 0.773825 0.196982
2017-03-06 0.901500 -0.115927 -1.448039 1.733633 -0.805994
2017-03-01 0.951188 -2.335634 1.592160 0.166211 -0.716212
2017-03-03 1.654593 0.431696 0.084542 0.121351 -0.197380
2017-03-07 1.673910 0.799920 -0.010755 -0.959697 -0.498297
A B C D E
2017-03-08 0.188582 0.492789 -1.364214 0.504932 1.241542
2017-03-07 1.673910 0.799920 -0.010755 -0.959697 -0.498297
2017-03-06 0.901500 -0.115927 -1.448039 1.733633 -0.805994
2017-03-05 -0.135071 -1.049060 -1.305366 0.558175 -0.087092
2017-03-04 -0.885580 0.668956 0.007392 0.561356 -0.214626
2017-03-03 1.654593 0.431696 0.084542 0.121351 -0.197380
2017-03-02 0.306423 -1.595937 0.532442 0.773825 0.196982
2017-03-01 0.951188 -2.335634 1.592160 0.166211 -0.716212
E D C B A
2017-03-01 -0.716212 0.166211 1.592160 -2.335634 0.951188
2017-03-02 0.196982 0.773825 0.532442 -1.595937 0.306423
2017-03-03 -0.197380 0.121351 0.084542 0.431696 1.654593
2017-03-04 -0.214626 0.561356 0.007392 0.668956 -0.885580
2017-03-05 -0.087092 0.558175 -1.305366 -1.049060 -0.135071
2017-03-06 -0.805994 1.733633 -1.448039 -0.115927 0.901500
2017-03-07 -0.498297 -0.959697 -0.010755 0.799920 1.673910
2017-03-08 1.241542 0.504932 -1.364214 0.492789 0.188582

df.describe() 对DataFrame 中的数据进行一个总的描述

print df.describe()

              A         B         C         D         E
count 8.000000 8.000000 8.000000 8.000000 8.000000
mean -0.087813 0.718481 -0.267764 -0.451818 0.560079
std 1.494381 0.499839 1.070840 1.008569 1.263091
min -2.176000 0.045393 -1.701633 -1.838860 -2.090028
25% -1.405379 0.298836 -0.848086 -0.997443 0.119207
50% 0.107146 0.836200 -0.246589 -0.536753 0.866753
75% 1.132235 1.040045 0.179091 -0.217005 1.542020
max 1.928376 1.310759 1.741579 1.624236 1.691431

可以看到它描述了每一列的 总数量, 平均值, (标准值?) , 最小值 , 平均低4分位 , 中位值 , 平均高四分位, 最大值

 

df.mean() 会对 DataFrame 的每一列元素求平均值(元素的类型要求是数字)

求出的平均值可以通过 list( )进行强制类型转换,转换之后得到的 list 中的元素的类型也是数(float)

 dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE'))
df.loc[: ,'A'] = 'a'
print df
print df.mean()
print list(df.mean())
print type(list(df.mean())[0])
            A         B         C         D         E
2017-03-01 a -0.857906 0.380529 0.531562 0.299163
2017-03-02 a 0.391248 -2.227574 0.792068 -1.100136
2017-03-03 a 0.260002 0.294271 0.392461 0.161064
2017-03-04 a -0.136737 0.018517 -0.284478 0.009943
2017-03-05 a -0.725036 -0.031868 1.289505 -0.108265
2017-03-06 a 1.616869 -1.528318 0.311700 1.386990
2017-03-07 a -0.961123 -0.244735 -0.120312 -0.595079
2017-03-08 a -0.631889 0.205291 -0.407998 -0.388415
B -0.130572
C -0.391736
D 0.313063
E -0.041842
dtype: float64
[-0.13057154848170802, -0.39173579343646675, 0.31306349321693849, -0.041841901046697855]
<type 'numpy.float64'>

三:DataFrame 的选择(切片)

print df['A']
print type(df['A']) 2017-03-01 -0.158978
2017-03-02 -1.690027
2017-03-03 1.188897
2017-03-04 -0.913982
2017-03-05 0.433453
2017-03-06 -1.381605
2017-03-07 0.148752
2017-03-08 1.021067
Freq: D, Name: A, dtype: float64
<class 'pandas.core.series.Series'>

df  后面可以直接跟 columns_name 。得到的是一个 Series,包含索引和列的元素值

 

当我们需要某一行(或某几行的DataFrame 时)。我们不能直接用行的索引来选择

print df['2017-03-01']
print df[0]

例如这样的操作。都会报错

 

而应该类似于list 中的切片操作。我们既可以对 行数(0,1,2,3)进行切片,也可以对index (2017-03-01  , 2017-03-02 ,,。。。)进行切片操作来选取。

print df[0:1]
print df[1:]
print df['2017-03-01':'2017-03-03']
print df[:] A B C D E
2017-03-01 -0.744223 0.517575 0.199179 -0.531218 1.18652
A B C D E
2017-03-02 0.297713 -1.394280 0.722143 0.194107 0.020040
2017-03-03 1.040041 0.844153 -1.523378 -0.024551 2.524847
2017-03-04 -0.136714 0.581337 0.458747 -1.616134 -0.831049
2017-03-05 1.131013 1.268097 0.392704 -0.891760 0.056044
2017-03-06 -0.479798 -0.408351 -1.041832 0.052908 -1.037984
2017-03-07 0.886389 1.528950 1.044967 1.646536 -0.394471
2017-03-08 -0.712788 0.571170 -0.916402 0.843917 1.471186
A B C D E
2017-03-01 -0.744223 0.517575 0.199179 -0.531218 1.186520
2017-03-02 0.297713 -1.394280 0.722143 0.194107 0.020040
2017-03-03 1.040041 0.844153 -1.523378 -0.024551 2.524847
A B C D E
2017-03-01 -0.744223 0.517575 0.199179 -0.531218 1.186520
2017-03-02 0.297713 -1.394280 0.722143 0.194107 0.020040
2017-03-03 1.040041 0.844153 -1.523378 -0.024551 2.524847
2017-03-04 -0.136714 0.581337 0.458747 -1.616134 -0.831049
2017-03-05 1.131013 1.268097 0.392704 -0.891760 0.056044
2017-03-06 -0.479798 -0.408351 -1.041832 0.052908 -1.037984
2017-03-07 0.886389 1.528950 1.044967 1.646536 -0.394471
2017-03-08 -0.712788 0.571170 -0.916402 0.843917 1.471186

还可以运用 loc函数来选取需要的元素值或者 DataFrame对象 和 Series 对象

当需要选取某一行(比如第0 行,索引值为  2017-03-01  )的时候 可以用 df.loc['2017-03-01'] 或者 df.loc[df.index[0]],但是不可以使用 df.loc[0]。将会得到一个 Series 对象

当需要选取某一列  (比如列的索引为 ‘A’)的时候,可以用 df.loc[: , 'A'],会得到一个 Series 对象

也就是说,用 loc 选取的时候,只能使用索引,而不能简单的用0,1,2.。。。来代替

当我们需要得到一个某几行几列的 DataFrame 对象的时候。需要使用切片。

与上面不同的是,loc 的切片只能用索引切片。

 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE')) print df.loc['2017-03-01']
print
print df.loc[: , 'A']
print
print df.loc['2017-03-01','A']
print
print df.loc[df.index[0]:df.index[3] , 'A':'C']
A    0.523693
B 0.949603
C -0.683277
D 0.570584
E -0.762546
Name: 2017-03-01 00:00:00, dtype: float64 2017-03-01 0.523693
2017-03-02 -1.327872
2017-03-03 -0.426860
2017-03-04 1.924556
2017-03-05 -0.107997
2017-03-06 -1.142094
2017-03-07 -0.033565
2017-03-08 -0.055100
Freq: D, Name: A, dtype: float64 0.523692755138 A B C
2017-03-01 0.523693 0.949603 -0.683277
2017-03-02 -1.327872 -0.240553 -0.955248
2017-03-03 -0.426860 -1.569299 -0.776820
2017-03-04 1.924556 0.420573 -0.517472

前面我们说,在用 loc 进行选择的时候,我们只能用索引值,不能用下标(0,1,2,3......)

现在有函数 iloc 可以支持我们用下标进行选择并且只能用下标进行选择。基本上与 loc 一致。只是 loc 的所有索引都需要被换成下标。

 print df.iloc[0]
print
print df.iloc[: , 0]
print
print df.iloc[0,0]
print
print df.iloc[0:3 , 0:3]
A   -0.746018
B -2.008161
C 0.662723
D -1.446216
E -1.069992
Name: 2017-03-01 00:00:00, dtype: float64 2017-03-01 -0.746018
2017-03-02 0.355898
2017-03-03 0.224572
2017-03-04 0.491077
2017-03-05 0.189671
2017-03-06 1.287336
2017-03-07 0.625124
2017-03-08 -1.064447
Freq: D, Name: A, dtype: float64 -0.746017502389 A B C
2017-03-01 -0.746018 -2.008161 0.662723
2017-03-02 0.355898 -0.773666 0.741954
2017-03-03 0.224572 1.839602 -1.701422

 筛选某些具有特定要求的数据得到一个新的 DataFrame

df[(df.A > 0 )  & (df['B'] > 0) ]

df.loc[  (df.A > 0) | df['B'] < 0 ]

 print df
print df[(df.A > 0) & (df['B'] > 0)]
print df.loc[(df.A > 0) | (df['B'] < 0)]
                   A         B         C         D         E
2017-03-01 0.399499 -0.301952 0.829142 0.378531 -0.372409
2017-03-02 1.856642 -0.569681 -0.639396 0.352889 -0.579640
2017-03-03 -0.688705 -1.020069 0.694585 0.954841 0.108886
2017-03-04 -0.251342 0.963177 -1.245065 -0.405680 -0.264811
2017-03-05 -0.421710 -0.404864 0.295869 -1.315680 1.849906
2017-03-06 1.036118 -1.373403 -0.297122 -0.795075 -0.245171
2017-03-07 0.601060 1.765738 0.948425 -0.574575 1.008444
2017-03-08 -0.587488 -0.696066 -1.634978 -0.416340 0.791085
A B C D E
2017-03-07 0.60106 1.765738 0.948425 -0.574575 1.008444
A B C D E
2017-03-01 0.399499 -0.301952 0.829142 0.378531 -0.372409
2017-03-02 1.856642 -0.569681 -0.639396 0.352889 -0.579640
2017-03-03 -0.688705 -1.020069 0.694585 0.954841 0.108886
2017-03-05 -0.421710 -0.404864 0.295869 -1.315680 1.849906
2017-03-06 1.036118 -1.373403 -0.297122 -0.795075 -0.245171
2017-03-07 0.601060 1.765738 0.948425 -0.574575 1.008444
2017-03-08 -0.587488 -0.696066 -1.634978 -0.416340 0.791085

当有多个条件时,每个条件需要用 () 括起来并且 用 &(且) 和  |(或)  进行连接。

 

df[df > 0] 筛选出 df 中元素值大于0的元素。对于小于0 的元素填 np.nan。返回得到的这个新  DataFrame

print df
print df[df > 0] A B C D E
2017-03-01 1.677450 2.163308 1.062092 -0.523620 0.628484
2017-03-02 -0.246469 1.167712 0.422173 -1.267306 0.452185
2017-03-03 -0.016746 -1.110537 -2.106998 -0.715175 -1.450872
2017-03-04 0.900309 1.416489 1.389152 0.416001 1.557737
2017-03-05 0.577419 0.525642 -2.726353 -0.506887 -0.765607
2017-03-06 -0.598997 2.052256 0.204728 1.783496 -1.765711
2017-03-07 -1.267873 0.856503 1.236517 -1.239220 0.536613
2017-03-08 -2.534660 -1.395564 -0.542685 0.800363 -1.008428
A B C D E
2017-03-01 1.677450 2.163308 1.062092 NaN 0.628484
2017-03-02 NaN 1.167712 0.422173 NaN 0.452185
2017-03-03 NaN NaN NaN NaN NaN
2017-03-04 0.900309 1.416489 1.389152 0.416001 1.557737
2017-03-05 0.577419 0.525642 NaN NaN NaN
2017-03-06 NaN 2.052256 0.204728 1.783496 NaN
2017-03-07 NaN 0.856503 1.236517 NaN 0.536613
2017-03-08 NaN NaN NaN 0.800363 NaN

df[  df['E'].isin[ list ] ]

df.loc[:3,'E'] = 2
df.loc[3: , 'E'] =3
print df
print df[df['E'].isin([1,2])] A B C D E
2017-03-01 0.831030 0.091797 -1.372896 -0.209519 2.0
2017-03-02 -0.207082 1.756175 0.814452 0.919294 2.0
2017-03-03 -0.309872 0.823114 -0.667895 -0.723452 2.0
2017-03-04 -0.232162 -0.387264 -0.366248 0.908574 3.0
2017-03-05 0.382886 -1.131076 -0.369336 -0.128234 3.0
2017-03-06 0.665425 -0.240306 0.167547 0.215651 3.0
2017-03-07 0.709806 1.931120 -1.107219 0.331201 3.0
2017-03-08 0.527246 0.683884 0.084874 1.195304 3.0
A B C D E
2017-03-01 0.831030 0.091797 -1.372896 -0.209519 2.0
2017-03-02 -0.207082 1.756175 0.814452 0.919294 2.0
2017-03-03 -0.309872 0.823114 -0.667895 -0.723452 2.0

四:对DataFrame 的设置

可以直接通过上面的选择方法来选择一行或者一列或者某一个行列均确定的元素,然后赋值直接修改即可。

主要过程和上面基本相同。

另外,DataFrame 是可以进行 四则运算的。它会对相应位置上的元素值进行四则运算从而得到一个新的 DataFrame

 

五:对 DataFrame 缺失值的处理

可以删除缺失值

df.dropna(axis = 0/1 , how = 'any'/'all') axis 默认为0。 删除某一行(axis = 0 ),或者某一列(axis = 1),如果这一行/列 全部是空值(how = 'all'),有至少有一个空值( how = 'any')

可以填充全部缺失值

df.fillna(value = value)

 #-*_-coding:utf-8-*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #DataFrame
dates = pd.date_range('' , periods = 8)
df = pd.DataFrame(np.random.randn(8 , 5) , index = dates , columns = list('ABCDE'))
s = pd.Series([1]*3 + [np.nan] * (len(df) -3) , pd.date_range('' , periods = 8)) df.E = s
df.loc[: , 'F'] = np.nan
df.loc[df.index[-1]] = np.nan
print df print df.dropna(axis = 1 , how = 'all')
print df.dropna(axis = 1 , how = 'all').dropna(axis = 0 , how = 'any')
print df.dropna(how = 'all')
                   A         B         C         D    E   F
2017-03-01 1.811369 1.316996 -0.641261 -0.448455 1.0 NaN
2017-03-02 -0.019703 0.749759 -0.009580 0.715036 1.0 NaN
2017-03-03 1.347926 1.026859 -1.084211 -0.813363 1.0 NaN
2017-03-04 1.583241 -0.277278 -0.303702 1.724784 NaN NaN
2017-03-05 -1.030510 0.311998 -2.508356 -0.824971 NaN NaN
2017-03-06 -0.322945 -0.215030 0.356070 -1.027667 NaN NaN
2017-03-07 0.315569 -0.780942 0.951732 0.018470 NaN NaN
2017-03-08 NaN NaN NaN NaN NaN NaN
A B C D E
2017-03-01 1.811369 1.316996 -0.641261 -0.448455 1.0
2017-03-02 -0.019703 0.749759 -0.009580 0.715036 1.0
2017-03-03 1.347926 1.026859 -1.084211 -0.813363 1.0
2017-03-04 1.583241 -0.277278 -0.303702 1.724784 NaN
2017-03-05 -1.030510 0.311998 -2.508356 -0.824971 NaN
2017-03-06 -0.322945 -0.215030 0.356070 -1.027667 NaN
2017-03-07 0.315569 -0.780942 0.951732 0.018470 NaN
2017-03-08 NaN NaN NaN NaN NaN
A B C D E
2017-03-01 1.811369 1.316996 -0.641261 -0.448455 1.0
2017-03-02 -0.019703 0.749759 -0.009580 0.715036 1.0
2017-03-03 1.347926 1.026859 -1.084211 -0.813363 1.0
A B C D E F
2017-03-01 1.811369 1.316996 -0.641261 -0.448455 1.0 NaN
2017-03-02 -0.019703 0.749759 -0.009580 0.715036 1.0 NaN
2017-03-03 1.347926 1.026859 -1.084211 -0.813363 1.0 NaN
2017-03-04 1.583241 -0.277278 -0.303702 1.724784 NaN NaN
2017-03-05 -1.030510 0.311998 -2.508356 -0.824971 NaN NaN
2017-03-06 -0.322945 -0.215030 0.356070 -1.027667 NaN NaN
2017-03-07 0.315569 -0.780942 0.951732 0.018470 NaN NaN
print df
print df.fillna(value = 2) A B C D E F
2017-03-01 0.529989 1.278479 -2.450377 1.019220 1.0 NaN
2017-03-02 -0.834147 0.563709 2.127497 -0.004560 1.0 NaN
2017-03-03 -1.630047 -0.251976 -0.217972 1.530107 1.0 NaN
2017-03-04 1.012212 -0.197851 2.217734 0.290256 NaN NaN
2017-03-05 1.259308 0.102747 0.183875 -0.048879 NaN NaN
2017-03-06 0.199627 1.776640 1.347103 -1.655109 NaN NaN
2017-03-07 -0.144254 0.533370 0.692462 0.690940 NaN NaN
2017-03-08 NaN NaN NaN NaN NaN NaN
A B C D E F
2017-03-01 0.529989 1.278479 -2.450377 1.019220 1.0 2.0
2017-03-02 -0.834147 0.563709 2.127497 -0.004560 1.0 2.0
2017-03-03 -1.630047 -0.251976 -0.217972 1.530107 1.0 2.0
2017-03-04 1.012212 -0.197851 2.217734 0.290256 2.0 2.0
2017-03-05 1.259308 0.102747 0.183875 -0.048879 2.0 2.0
2017-03-06 0.199627 1.776640 1.347103 -1.655109 2.0 2.0
2017-03-07 -0.144254 0.533370 0.692462 0.690940 2.0 2.0
2017-03-08 2.000000 2.000000 2.000000 2.000000 2.0 2.0

总结一下:

1.首先是创建。包括 Series 和 DataFrame 的创建。

其中 Series = pd.Series(values , keys)

  DateFrame = pd.DataFrame(list(values)  , index = list , columns = list)

2.其次是 DataFrame 的一些自带的函数功能调用。

  df.head() , df.tail() , df.sort_values() , df.mean() , df.describe()。以及df.values , df.index ,df.T 等等

3.主要需要掌握对DataFrame的数据选择处理

  df.value可以直接选择某一列的数据 , df[  ]只能使用切片选择,可以使用索引和下标切片

  df.loc[]需要使用索引, df.iloc[]需要使用下标

  df[df.values > 0]可以筛选出满足条件的一个DataFrame出来。需要满足多个条件时df[(df.A > 0)&(df.B < 0)]

4.缺失值的处理。删除或填充。   df.dropna(axis = 0  , how)      df.fillna(value)

数据处理之pandas简单介绍的更多相关文章

  1. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  2. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  3. [数据分析工具] Pandas 功能介绍(一)

    如果你在使用 Pandas(Python Data Analysis Library) 的话,下面介绍的对你一定会有帮助的. 首先我们先介绍一些简单的概念 DataFrame:行列数据,类似 Exce ...

  4. Python 数据处理库 pandas 入门教程

    Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...

  5. Python 数据处理库pandas教程(最后附上pandas_datareader使用实例)

    0 简单介绍 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库.本文是对它的一个入门教程. pandas提供了快速,灵活和富有 ...

  6. Python常用的库简单介绍一下

    Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...

  7. Reactive ExtensionsLINQ和Rx简单介绍

    LINQ和Rx简单介绍 相信大家都用过Language Integrated Query (LINQ),他是一种强大的工具能够从集合中提取数据.Reactive Extensions(Rx)是对LIN ...

  8. 【学习】pandas 基础介绍说明 【pandas】

    本文来源于<利用python进行数据分析>中文版,大家有兴趣可以看原版,入门的东西得脚踏实地哈 1.pandas 数据结构介绍 首先熟悉它的两个主要数据结构,Series 和 DataFr ...

  9. 《R语言入门》语言及环境简单介绍

    简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

随机推荐

  1. Jmeter安装使用教程

    解压jakarta-jmeter-X.X.zip至至如c盘:C:/jakarta-jmeter-2.2目录下.      桌面上选择“我的电脑”(右键),高级, 环境变量, 在“系统变量”---> ...

  2. JFrame

    import java.awt.*; import java.awt.event.*; import javax.swing.*; public class KeyDemo extends JFram ...

  3. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一)

    引言 现在做游戏开发的没有几个不用Excel的,用的最多的就是策划.尤其是数值策划,Excel为用户提供强大的工具,各种快捷键,各种插件,各种函数.但是作为程序来说其实关注的不是Excel而是它最终形 ...

  4. hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)

    hostPath Volume 的作用是将 Docker Host 文件系统中已经存在的目录 mount 给 Pod 的容器.大部分应用都不会使用 hostPath Volume,因为这实际上增加了 ...

  5. IP通信基础课堂笔记----关于数链层

    课前回顾 IOS从上到下分别有:应用层,传输层,网络层,数链层,物理层. IP是网络层的地址,MAC是数链层的地址,IP必须通过ARP才能转换成MAC地址. 课堂内容 1.如何在数链层实现发送端数据无 ...

  6. 巧克力分配问题——C语言

    某品牌巧克力使用500克原料可制作55小块巧克力,请编程实现:输入原料重量(以千克为单位),计算出制作巧克力的块数(四舍五入).然后对这些巧克力进行分包,小盒放11块,大盒放24块,问各分装多少大盒多 ...

  7. python item repr doc format slots doc module class 析构 call 描述符

    1.item # __getitem__ __setitem__ __delitem__ obj['属性']操作触发 class Foo: def __getitem__(self, item): r ...

  8. bzoj2699 更新

    题意 对于一个数列A[1..N],一种寻找最大值的方法是:依次枚举A[2]到A[N],如果A[i]比当前的A[1]值要大,那么就令A[1]=A[i],最后A[1]为所求最大值.假设所有数都在范围[1, ...

  9. tf.name_scope tf.variable_scope学习

    1. 首先看看比较简单的 tf.name_scope(‘scope_name’). tf.name_scope 主要结合 tf.Variable() 来使用,方便参数命名管理. ''' Signatu ...

  10. python系列四:Python3字符串

    #!/usr/bin/python #Python3 字符串#可以截取字符串的一部分并与其他字段拼接var1 = 'Hello World!'print ("已更新字符串 : ", ...