频道栏目
首页 > 程序开发 > 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))无需申请自动送层级转换此免费白菜网站大全2018意为将一级索引转换为二级索引

无需申请自动送&无需申请自动送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技术学习网站

无需申请自动送