频道栏目
首页 > 程序开发 > Web开发 > Python > 正文
python数据分析之pandas实例解析
2018-07-27 14:40:33      个评论    来源:SunChao3555的博客  
收藏   我要投稿

python数据分析之pandas实例解析

世界杯投注官网coding:utf-8
import scrapy
import xlwt, lxml
import re, json
import matplotlib.pyplot as plt
import numpy as np
import pylab
from scipy import linalg
from pandas import DataFrame,Series,MultiIndex
import pandas as pd
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
基本功能 函数应用和映射
 numpy的ufuncs(元素级数组方法)
 DataFrame的apply方法
 对象的applymap方法(因为Series有一个应用于元素级的map方法)
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网函数
df=DataFrame(np.random.randn(4,3),columns=list(&世界杯投注官网39;bde&世界杯投注官网39;),index=[&世界杯投注官网39;Utah&世界杯投注官网39;, &世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Texas&世界杯投注官网39;, &世界杯投注官网39;Oregon&世界杯投注官网39;])
print(df)
print(np.abs(df))世界杯投注官网求绝对值
世界杯投注官网lambda【匿名函数】以及应用
f=lambda x:x.max()-x.min()
世界杯投注官网 def f(x):
世界杯投注官网  return Series([x.min(),x.max()],index=[&世界杯投注官网39;min&世界杯投注官网39;,&世界杯投注官网39;max&世界杯投注官网39;])
print(df.apply(f))世界杯投注官网执行函数f[列(axis=0) 最大值-最小值]
print(df.apply(f,axis=1))世界杯投注官网按照轴1执行
世界杯投注官网applymap 和 map
_format=lambda x:&世界杯投注官网39;%.2f&世界杯投注官网39;%x
print(df.applymap(_format))世界杯投注官网格式化每一个元素
print(df.e.map(_format))世界杯投注官网格式化指定索引或列(相当于Series)中的元素
世界杯投注官网排序和排位
世界杯投注官网根据索引排序,对于DataFrame可以指定轴
obj=Series(range(4),index=[&世界杯投注官网39;d&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;])
print(obj.sort_index())
df1=DataFrame(np.arange(8).reshape(2,4),index=[&世界杯投注官网39;three&世界杯投注官网39;,&世界杯投注官网39;one&世界杯投注官网39;],columns=list(&世界杯投注官网39;dabc&世界杯投注官网39;))
print(df1.sort_index())
print(df1.sort_index(axis=1,ascending=False))世界杯投注官网按列降序
世界杯投注官网根据值排序
obj1=Series([4,7,-3,2])
print(obj.sort_values())
世界杯投注官网DataFrame指定列排序
df2= DataFrame({&世界杯投注官网39;b&世界杯投注官网39;:[4, 7, -3, 2], &世界杯投注官网39;a&世界杯投注官网39;:[0, 1, 0, 1]})
print(df2)
print(df2.sort_values(by=&世界杯投注官网39;b&世界杯投注官网39;))
print(df2.sort_values(by=[&世界杯投注官网39;a&世界杯投注官网39;,&世界杯投注官网39;b&世界杯投注官网39;]))

世界杯投注官网rank,求排名的平均位置(从1开始)
obj2 = Series([7, -5, 7, 4, 2, 0, 4])
print(obj2.rank(method=&世界杯投注官网39;first&世界杯投注官网39;))世界杯投注官网去第一次出现,不求平均值。
print(obj2.rank())世界杯投注官网默认method=&世界杯投注官网39;average&世界杯投注官网39;
print(obj2.rank(ascending=False,method=&世界杯投注官网39;max&世界杯投注官网39;))世界杯投注官网逆序,并取最大值。所以-5的rank是7
df3=DataFrame({&世界杯投注官网39;b&世界杯投注官网39;:[4.3, 7, -3, 2],
&世界杯投注官网39;a&世界杯投注官网39;:[0, 1, 0, 1],
&世界杯投注官网39;c&世界杯投注官网39;:[-2, 5, 8, -2.5]})
print(df3.rank(axis=1))世界杯投注官网按列排位
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网基本功能 重复索引
 世界杯投注官网对于重复索引,返回Series,对应单个值的索引则返回标量
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
obj = Series(range(5), index = [&世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;])
print (obj.index.is_unique) 世界杯投注官网 判断是非有重复索引
print ( obj.a[:1])世界杯投注官网若有重复索引则通过将该索引切片取值
df = DataFrame(np.random.randn(4, 3), index = [&世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;])
print (df)
世界杯投注官网 世界杯投注官网 print (df.ix[&世界杯投注官网39;b&世界杯投注官网39;].ix[0])
print (df.ix[&世界杯投注官网39;b&世界杯投注官网39;].ix[0])
print (df.ix[&世界杯投注官网39;b&世界杯投注官网39;].ix[1])
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网汇总和计算描述
 世界杯投注官网 常用方法选项
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
axis 指定轴,DataFrame行用0,列用1
 skipna 排除缺失值,默认值为True
 level 如果轴是层次化索引(即MultiIndex),则根据level选取分组
 count 非NA值的数量
 describe 汇总
 min,max
 argmin,argmax 计算能够获取到最小值和最大值的索引位置(整数)
 idxmin,idxmax 计算能够获取到最小值和最大值的索引值
 sum,mean,median,mad 总和,均值,中位数,平均绝对离差
 var,std,skew,kurt,cumsum,cummin,cummax,cumprod 样本值的方差、标准差、偏度(三阶矩)、偏度(四阶矩)、累计和、累计最大值、累计最小值、累计积
 diff 计算一阶差分
 pct_change 计算百分数变化
 NA值被自动排查,除非通过skipna选项
 
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;

世界杯投注官网DataFrame csv文件读写以及pandas_datareader 的使用
import pandas_datareader.data as web
from pandas import Panel
import datetime
start=datetime.datetime(2017,7,25)
end=datetime.date.today()
世界杯投注官网 all_data={}
世界杯投注官网 世界杯投注官网DataReader(name,data_source,start,end)
世界杯投注官网 世界杯投注官网 for ticker in [&世界杯投注官网39;AAPL&世界杯投注官网39;, &世界杯投注官网39;IBM&世界杯投注官网39;, &世界杯投注官网39;MSFT&世界杯投注官网39;, &世界杯投注官网39;GOOG&世界杯投注官网39;]:
世界杯投注官网 all_data[&世界杯投注官网39;AAPL&世界杯投注官网39;] = web.DataReader(&世界杯投注官网39;AAPL&世界杯投注官网39;,&世界杯投注官网39;iex&世界杯投注官网39;,start,end)
世界杯投注官网 pdata=Panel(all_data)
世界杯投注官网 print(pdata)
世界杯投注官网 price = DataFrame({tic: data[&世界杯投注官网39;close&世界杯投注官网39;] for tic, data in all_data.items()})世界杯投注官网将从all_data中将股票名为tic 的data[&世界杯投注官网39;close&世界杯投注官网39;]按日期索引取出并转化成DataFrame结构
世界杯投注官网 volume = DataFrame({tic: data[&世界杯投注官网39;volume&世界杯投注官网39;] for tic, data in all_data.items()})世界杯投注官网******************
世界杯投注官网  世界杯投注官网 print(&世界杯投注官网39;**********************&世界杯投注官网39;)
世界杯投注官网  世界杯投注官网 print(price)
世界杯投注官网 price.to_csv(&世界杯投注官网39;close.csv&世界杯投注官网39;)
世界杯投注官网 returns = price.pct_change()
世界杯投注官网 print(returns.tail())
世界杯投注官网 print(returns.MSFT.corr(returns.IBM))
世界杯投注官网 print(returns.corr())
世界杯投注官网 print(returns.cov())
世界杯投注官网 print(returns.corrwith(returns.IBM))
世界杯投注官网 print(returns.corrwith(returns.volume))
世界杯投注官网 appl=web.DataReader(&世界杯投注官网39;AAPL&世界杯投注官网39;,&世界杯投注官网39;iex&世界杯投注官网39;,start,end)
世界杯投注官网 print(appl)
世界杯投注官网
世界杯投注官网 data=all_data[&世界杯投注官网39;AAPL&世界杯投注官网39;]
世界杯投注官网 df=DataFrame({&世界杯投注官网39;open&世界杯投注官网39;:data.open,&世界杯投注官网39;high&世界杯投注官网39;:data.high,&世界杯投注官网39;low&世界杯投注官网39;:data.low,&世界杯投注官网39;close&世界杯投注官网39;:data.close,
世界杯投注官网&世界杯投注官网39;volume&世界杯投注官网39;:data.volume})
世界杯投注官网 print(df.index)
世界杯投注官网 print(df)
世界杯投注官网 df.to_csv(&世界杯投注官网39;apple.csv&世界杯投注官网39;)
name=[&世界杯投注官网39;date&世界杯投注官网39;,&世界杯投注官网39;open&世界杯投注官网39;,&世界杯投注官网39;high&世界杯投注官网39;,&世界杯投注官网39;low&世界杯投注官网39;,&世界杯投注官网39;close&世界杯投注官网39;,&世界杯投注官网39;volume&世界杯投注官网39;]
raw=pd.read_csv(&世界杯投注官网39;apple.csv&世界杯投注官网39;)
df2=raw.set_index(raw.date)
df3=df2.reindex([&世界杯投注官网39;open&世界杯投注官网39;,&世界杯投注官网39;high&世界杯投注官网39;,&世界杯投注官网39;low&世界杯投注官网39;,&世界杯投注官网39;close&世界杯投注官网39;,&世界杯投注官网39;volume&世界杯投注官网39;],axis=1,)
print(df3)
世界杯投注官网 print(raw.open-raw.close)
世界杯投注官网 print(raw)
世界杯投注官网 new_index=raw.ix[&世界杯投注官网39;date&世界杯投注官网39;,:]
世界杯投注官网 raw.set_axis(new_index,axis=1,inplace=True)
世界杯投注官网 print(s1-s2)

世界杯投注官网 print(df.index)

&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
如果报以下错误:
世界杯投注官网from pandas.core.common import is_list_like
世界杯投注官网 ImportError: cannot import name &世界杯投注官网39;is_list_like&世界杯投注官网39;
修改(点击Run信息框中的文件地址链接亦可)...set_packages/pandas_datareader/fred.py文件中的from pandas.core.common import 
is_like_list 
为from pandas.api.types import is_like_list【通常在文件第一行】
另外,data_source=&世界杯投注官网39;yahoo&世界杯投注官网39; 会ImmediateDeprecationError,
data_source=&世界杯投注官网39;google&世界杯投注官网39; 因谷歌在中国不可用也会报错
具体可看.../set_packages/pandas_datareader/data.py中的相关描述
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网唯一值以及成员资格
世界杯投注官网is_in计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组
世界杯投注官网 unique 计算Series中的唯一值数组,按发现的顺序返回
世界杯投注官网value_counts 返回一个Serie,其索引为唯一值,其值为频率,按计数值降序排列
世界杯投注官网去重
obj = Series([&世界杯投注官网39;c&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;d&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;])
print (obj.unique())
print (obj.value_counts())

世界杯投注官网判断元素存在
mask = obj.isin([&世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;])
print (mask)
print (obj[mask]) 世界杯投注官网只打印元素b和c
data = DataFrame({&世界杯投注官网39;Qu1&世界杯投注官网39;:[1, 3, 4, 3, 4],
&世界杯投注官网39;Qu2&世界杯投注官网39;:[2, 3, 1, 2, 3],
&世界杯投注官网39;Qu3&世界杯投注官网39;:[1, 5, 2, 4, 4]})
print (data)
print (data.apply(pd.value_counts).fillna(0))
print (data.apply(pd.value_counts, axis = 1).fillna(0))
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
处理缺失数据
 NA处理方法
  dropna 根据各标签的值中是否存在缺少数据对轴
  fillba 样本值的标准差
  isnull 样本值的偏度(三阶矩)
  notnull
 NaN(Not a Number)表示浮点数和非浮点数组中的缺失数据
 None也被当作NA处理
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
string_data = Series([&世界杯投注官网39;aardvark&世界杯投注官网39;, &世界杯投注官网39;artichoke&世界杯投注官网39;, np.nan, &世界杯投注官网39;avocado&世界杯投注官网39;])
print(string_data.isnull())
string_data[0]=None
print(string_data.isnull())
print(string_data.dropna())
世界杯投注官网&世界杯投注官网39;DataFrame对丢弃NA的处理&世界杯投注官网39;
from numpy import nan as NA
data = DataFrame([[1., 6.5, 3.], [1., NA, NA],
[NA, NA, NA], [NA, 6.5, 3.]])
print (data.dropna()) 世界杯投注官网 默认只要某行有NA就全部删除
print (data.dropna(how = &世界杯投注官网39;all&世界杯投注官网39;))  世界杯投注官网 某行全部为NA才删除
data[4] = NA  世界杯投注官网 新增一列
print (data.dropna(axis = 1, how = &世界杯投注官网39;all&世界杯投注官网39;))世界杯投注官网某列全部为NA才删除
data = DataFrame(np.random.randn(7, 3))
data.ix[:4, 1] = NA世界杯投注官网第0-4行的 1 列为NA
data.ix[:2, 2] = NA
print (data)
print (data.dropna(thresh = 2)) 世界杯投注官网 行大于等于2个非NA元素会被删除
世界杯投注官网how参数控制行为,axis参数选择轴,thresh参数控制留下的数量
世界杯投注官网填充缺失数据
世界杯投注官网 fillna
世界杯投注官网 inplace参数控制返回新对象还是就地更改
df = DataFrame(np.random.randn(7, 3))
df.ix[:4, 1] = NA
df.ix[:2, 2] = NA
世界杯投注官网 print (df.fillna(0))
世界杯投注官网 df.fillna(0, inplace = True)
世界杯投注官网&世界杯投注官网39;不同行列填充不同的值&世界杯投注官网39;
print(df.fillna({1:0.5,3:-1}))世界杯投注官网指定某列填充某值,列不存在则该列不填充
世界杯投注官网指定不同的填充方式method参数,limit参数
世界杯投注官网 还可用数据填充
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
层次化索引
 使你能在一个轴上拥有多个(两个以上)索引级别。抽象地说,它使你能以低纬度形式处理高维度数据
 通过stack与unstack变换DataFrame
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网Series 的层次索引
data = Series(np.random.randn(10),
  index = [[&世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;, &世界杯投注官网39;c&世界杯投注官网39;, &世界杯投注官网39;d&世界杯投注官网39;, &世界杯投注官网39;d&世界杯投注官网39;],[1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])
print(data)
print(data.index)
print(data.b)
print(data[&世界杯投注官网39;b&世界杯投注官网39;:&世界杯投注官网39;c&世界杯投注官网39;])
print(data.unstack())世界杯投注官网转化成DataFrame结构
print(data.unstack().stack())世界杯投注官网转化成Series结构,将变成多级索引
世界杯投注官网DataFrame的层次索引
df = DataFrame(np.arange(12).reshape((4, 3)),
index = [[&世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;], [1, 2, 1, 2]],
columns = [[&世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Colorado&世界杯投注官网39;], [&世界杯投注官网39;Green&世界杯投注官网39;, &世界杯投注官网39;Red&世界杯投注官网39;, &世界杯投注官网39;Green&世界杯投注官网39;]])
print(df)
df.index.names=[&世界杯投注官网39;key1&世界杯投注官网39;,&世界杯投注官网39;key2&世界杯投注官网39;]
df.columns.names=[&世界杯投注官网39;states&世界杯投注官网39;,&世界杯投注官网39;color&世界杯投注官网39;]
print(df)
print(df.ix[&世界杯投注官网39;a&世界杯投注官网39;,1])世界杯投注官网取索引a对应第一行
print(df.ix[&世界杯投注官网39;a&世界杯投注官网39;,&世界杯投注官网39;Ohio&世界杯投注官网39;])世界杯投注官网取索引a对应Ohio列
print(df.ix[&世界杯投注官网39;a&世界杯投注官网39;,2][&世界杯投注官网39;Colorado&世界杯投注官网39;])世界杯投注官网取索引a对应第二行Colorado列的元素
print(df.ix[&世界杯投注官网39;a&世界杯投注官网39;,2][&世界杯投注官网39;Ohio&世界杯投注官网39;][&世界杯投注官网39;Red&世界杯投注官网39;])世界杯投注官网取索引a对应第二行Ohio列索引对应Red列的元素
世界杯投注官网直接用MultiIndex创建层次索引结构
print (MultiIndex.from_arrays([[&世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Colorado&世界杯投注官网39;], [&世界杯投注官网39;Gree&世界杯投注官网39;, &世界杯投注官网39;Red&世界杯投注官网39;, &世界杯投注官网39;Green&世界杯投注官网39;]],
  names = [&世界杯投注官网39;state&世界杯投注官网39;, &世界杯投注官网39;color&世界杯投注官网39;]))
世界杯投注官网重新分级顺序
frame = DataFrame(np.arange(12).reshape((4, 3)),
index = [[&世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;a&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;, &世界杯投注官网39;b&世界杯投注官网39;], [1, 2, 1, 2]],
columns = [[&世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Ohio&世界杯投注官网39;, &世界杯投注官网39;Colorado&世界杯投注官网39;], [&世界杯投注官网39;Green&世界杯投注官网39;, &世界杯投注官网39;Red&世界杯投注官网39;, &世界杯投注官网39;Green&世界杯投注官网39;]])
frame.index.names = [&世界杯投注官网39;key1&世界杯投注官网39;, &世界杯投注官网39;key2&世界杯投注官网39;]
frame_swapped = frame.swaplevel(&世界杯投注官网39;key1&世界杯投注官网39;, &世界杯投注官网39;key2&世界杯投注官网39;)
print (frame_swapped)
print (frame_swapped.swaplevel(0, 1))世界杯投注官网层级转换此世界杯指定投注平台意为将一级索引转换为二级索引

世界杯投注官网&世界杯投注官网39;根据索引排序&世界杯投注官网39;
print (frame.sort_index(level=&世界杯投注官网39;key2&世界杯投注官网39;))
print (frame.swaplevel(0, 1).sort_index(level=0))
世界杯投注官网根据级别汇总
print(frame.sum(level=&世界杯投注官网39;key2&世界杯投注官网39;))
世界杯投注官网使用列生成层次索引
df6=DataFrame({&世界杯投注官网39;a&世界杯投注官网39;:range(7),
&世界杯投注官网39;b&世界杯投注官网39;:range(7,0,-1),
&世界杯投注官网39;c&世界杯投注官网39;:[&世界杯投注官网39;one&世界杯投注官网39;,&世界杯投注官网39;one&世界杯投注官网39;,&世界杯投注官网39;one&世界杯投注官网39;,&世界杯投注官网39;two&世界杯投注官网39;,&世界杯投注官网39;two&世界杯投注官网39;,&世界杯投注官网39;two&世界杯投注官网39;,&世界杯投注官网39;two&世界杯投注官网39;],
&世界杯投注官网39;d&世界杯投注官网39;:[0,1,2,0,1,2,3],
})
print(df6)
print(df6.set_index([&世界杯投注官网39;c&世界杯投注官网39;,&世界杯投注官网39;d&世界杯投注官网39;]))世界杯投注官网将c,d作为行索引(二级索引)
print(df6.set_index([&世界杯投注官网39;c&世界杯投注官网39;,&世界杯投注官网39;d&世界杯投注官网39;],drop=False))世界杯投注官网列依然保留
df7=df6.set_index([&世界杯投注官网39;c&世界杯投注官网39;,&世界杯投注官网39;d&世界杯投注官网39;])
print(df7.reset_index())世界杯投注官网索引重置
世界杯投注官网避免索引产生歧义使用整数索引(按序).iloc[row,col]
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;
世界杯投注官网面板(Pannel)数据
 通过三维ndarray创建pannel对象
 通过ix[]选取需要的数据
 访问顺序:item->major->minor
 通过stack展现面板数据
  
&世界杯投注官网39;&世界杯投注官网39;&世界杯投注官网39;

 

点击复制链接 与好友分享!回本站首页
上一篇:利用Python实现权限设置的详细教程
下一篇:最后一页
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑--致力于做实用的IT技术学习网站

世界杯投注官网