ipythonnotebook与ipython相比有优势如下:
1.一个编辑框可以轻松编写多行程序
2.如果画图图片可以直接显示在这个网页上
处理丢失数据:
预先准备
#先导入包
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
构造一个二维的DataFrame
#构造一个二维的DataFrame
dates=pd.date_range('20160301',periods=6)
df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('abcd'))
df
重新索引,
新加入一列,新加的一列值为NaN
df = df.reindex(index=dates[0:4], columns=list(df.columns) + ['e'])
#重新索引,新加的一列值为NaN
df
#给新插入列部分位置赋值,0-3行e列的值为1
df.loc[dates[0:3], 'e'] = 1#给新插入列部分位置赋值
df
丢弃包含空数据的行
df1=df.dropna()#丢弃包含空数据的行
df1
这里当时出现了个问题
后来得大神指点
后来就丢掉了
填充丢失的数据
df2=df.fillna(value=5)#替换包含空数据的行
df2
判断一个数据集里面是否包含有空数据
pd.isna(df)#判断是否有NaN
数据运算
算平均值(空数据不参与运算)
df.mean()#按列取平均值,NaN不参与运算
累加值
df.apply(np.cumsum)#每一行累加到下一行
把一个列作为参数交给函数处理
df.apply(lambda x: x.max() - x.min())#每一列的最大值减去其最小值
直方图化
产生10个由0-7之间随机数构成的series数据结构
s = pd.Series(np.random.randint(0, 7, size=10))#创建一个从0-7之间随机数的个数为10序列
s
各个数字产生了多少个
s.value_counts()#可以看到s中每个数字产生了多少个
数据合并
sql合并
left = pd.DataFrame({'key': ['foo1', 'foo2','foo3'], 'lval': [1, 2,3]})
right = pd.DataFrame({'key': ['foo1', 'foo2','foo3'], 'rval': [4, 5,6]})
left
right
pd.merge(left, right, on='key') #通过一样的key关联在一起
数据分组统计
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
....: 'foo', 'bar', 'foo', 'foo'],
....: 'B': ['one', 'one', 'two', 'three',
....: 'two', 'two', 'one', 'three'],
....: 'C': np.random.randn(8),
....: 'D': np.random.randn(8)})
df
通过A来分组,并将sum()功能应用于结果组
df.groupby('A').sum()#根据A里的fool和bar来分类,把fool的值都累加