首次使用Jupyter notebook 来做笔记,先试验一下~
print('hello,word')
hello,word
开始把前几天学过的pandas 和numpy两个包小试一下~
import pandas as pd
import numpy as np
使用pandas下的数据框展示数据
gdp = pd.DataFrame([[11.61,13.08,13.67,15.05],[12.81,14.30,15.07,16.62],[13.87,15.52,16.35,17.87],[14.80,16.62,17.36,18.94]],index = ['2012','2013','2014','2015'],columns = ['s1','s2','s3','s4'])
gdp
s1 | s2 | s3 | s4 | |
---|---|---|---|---|
2012 | 11.61 | 13.08 | 13.67 | 15.05 |
2013 | 12.81 | 14.30 | 15.07 | 16.62 |
2014 | 13.87 | 15.52 | 16.35 | 17.87 |
2015 | 14.80 | 16.62 | 17.36 | 18.94 |
#默认对列求和
gdp1 = gdp.sum()
gdp1
s1 53.09
s2 59.52
s3 62.45
s4 68.48
dtype: float64
#对行求和
gdp2 = gdp.sum(axis = 1)
gdp2
2012 53.41
2013 58.80
2014 63.61
2015 67.72
dtype: float64
#按行累积加总
gdp3 = gdp.cumsum(axis = 1)
gdp3
s1 | s2 | s3 | s4 | |
---|---|---|---|---|
2012 | 11.61 | 24.69 | 38.36 | 53.41 |
2013 | 12.81 | 27.11 | 42.18 | 58.80 |
2014 | 13.87 | 29.39 | 45.74 | 63.61 |
2015 | 14.80 | 31.42 | 48.78 | 67.72 |
df=pd.DataFrame([[1.4, np.nan], [7.1, -4.5], [np.nan, np.nan], [0.75, -1.3]], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
#有缺失值时将不进行加总
df1 = df.sum(axis = 1,skipna = False)
df1
a NaN
b 2.60
c NaN
d -0.55
dtype: float64
gdp.describe()#简单的描述性统计
s1 | s2 | s3 | s4 | |
---|---|---|---|---|
count | 4.000000 | 4.000000 | 4.000000 | 4.000000 |
mean | 13.272500 | 14.880000 | 15.612500 | 17.120000 |
std | 1.374539 | 1.529008 | 1.598465 | 1.674296 |
min | 11.610000 | 13.080000 | 13.670000 | 15.050000 |
25% | 12.510000 | 13.995000 | 14.720000 | 16.227500 |
50% | 13.340000 | 14.910000 | 15.710000 | 17.245000 |
75% | 14.102500 | 15.795000 | 16.602500 | 18.137500 |
max | 14.800000 | 16.620000 | 17.360000 | 18.940000 |
gdp.count()#非空值的数量
s1 4
s2 4
s3 4
s4 4
dtype: int64
gdp.corr()#行相关系数
s1 | s2 | s3 | s4 | |
---|---|---|---|---|
s1 | 1.000000 | 0.999358 | 0.999820 | 0.999514 |
s2 | 0.999358 | 1.000000 | 0.998854 | 0.997756 |
s3 | 0.999820 | 0.998854 | 1.000000 | 0.999612 |
s4 | 0.999514 | 0.997756 | 0.999612 | 1.000000 |
gdp.T.corr()#列相关系数
2012 | 2013 | 2014 | 2015 | |
---|---|---|---|---|
2012 | 1.000000 | 0.999139 | 0.999388 | 0.999731 |
2013 | 0.999139 | 1.000000 | 0.999428 | 0.998434 |
2014 | 0.999388 | 0.999428 | 1.000000 | 0.999457 |
2015 | 0.999731 | 0.998434 | 0.999457 | 1.000000 |
缺失值处理:一、丢弃,二、填充
一行中只要有一个格缺失,这行就要丢弃
df2 = df.dropna()
填充缺失值
df4 = pd.DataFrame([[1,np.nan],[7,4],[np.nan,np.nan],[1,3]],index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
df6 = df4.fillna('a')#缺失值处全部填充为括号内的值
df7 = df4.fillna(method = 'bfill')#向后填充,会出现漏值现象
df8 = df4.fillna(method = 'ffill')#向前填充,会出现漏值现象
print(df6,'\n',df7,'\n',df8)
结果如下
有两层索引,国家和年份的一维数组
选取中国
选取2015年所有国家
选取中国和日本所有年份
自定义变量名
wp = pd.DataFrame(worldPop,columns = ['population'])
给索引命名
wp1 = wp.index.names = ['country','year']
print(wp)
wp2 = wp.swaplevel('year' ,'country')#调换索引位置
wp3 = wp.reset_index(['year'])#将索引变成列变量
wp4 = wp3.set_index(['year'])#将变量变成索引
调换索引位置
将索引变成列变量
将变量变成索引
将变量变成索引的方法即将一维数组转换成了字典类型?
表明其实pandas的数据结构的一种,其中pandas有两种数据结构,分别是Series,Series可以简单地被认为是一维的数组。Series和一维数组最主要的区别在于Series类型具有索引(index),另一种即数据框DataFrame是将数个Series按列合并而成的二维数据结构。