excel文件下载地址:
链接:https://pan.baidu.com/s/1EkuKBPKnJW1muAGTVcVj7Q
提取码:dmjn
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
"""
DataFrame数据框 输出类型为DataFrame
二维的表格型数据结构,输出内容与mysql类似,有列名以及行索引。可以将DataFrame理解为Series的容器。
"""
# 方式一:通过字典方式创建
dataf = {'lie1': ['a', 'b', 'c'], 'lie2': [11, 33, 22]}
f1 = DataFrame(dataf) # 转化为DataFrame形式
print f1
f2 = DataFrame(dataf, columns=['lie1', 'lie2']) # 自定义输出列顺序
print f2
f3 = DataFrame(dataf, columns=['lie1', 'lie2'], index=['a1', 'a2', 'a3']) # 自定义索引名称
print f3
# 方式二:通过嵌套字典方式创建
dataf2 = {'lie1': {'hang1': 'py', 'hang2': 'java'}, 'lie2': {'hang1': 20, 'hang2': 30}}
# dataf2 = {'lie1': {'hang1': 'py', 'hang2': 'java'}, 'lie2': {'hang1': 20}}
d1 = DataFrame(dataf2)
print d1
d2 = DataFrame(dataf2, columns=['lie1', 'b', 'c']) # 生成新的DataFrame,没有定义值的列为NaN
print d2
d2['b'] = Series(['A', 'B'], index=['hang1', 'hang2']) # 修改某一列的值
d2['c']['hang2'] = 30 # 修改某一个数值
print d2
# 方式三:通过二维数组创建
arr = np.array(np.random.randint(0, 50, 12)).reshape(3, 4) # 随机生成0-50的12个数字,转化为三行四列
df = pd.DataFrame(arr)
print df
print type(df)
# 统计分析
d1 = pd.Series(3*np.random.normal(size=50)+10) # 生成50个正态分布的数据,并乘以3,且加10,转化为Series
d2 = np.random.f(2, 5, size=50) # 从F分布中抽取样本。2为组间自由度,4为组内自由度,50为数量
d3 = np.random.randint(1, 100, size=50) # 生成50个1-100的整数
d = pd.DataFrame(np.array([d1, d2, d3]).T, columns=['x1', 'x2', 'x3'])
print '3行50列的二维数组:\n', np.array([d1, d2, d3]) # 3行50列的二维数组
print '转置为50行3列的二维数组:\n', np.array([d1, d2, d3]).T # 转置为50行3列的二维数组
print 'df.head():\n', df.head()
# 定义一个函数:用于生成所有的统计描述指标
def describe_all(xx):
return pd.Series([xx.count(), xx.min(), xx.idxmin(),
xx.quantile(0.25), xx.median(),
xx.quantile(0.75), xx.mean(),
xx.max(), xx.idxmax(),
xx.mad(), xx.var(),
xx.std(), xx.skew(), xx.kurt()],
index=['Count', 'Min', 'Whicn_Min',
'Q1