pip install pandas
import Pandas as pd
scores = {
'name' : ['johe', 'mike', 'tom', 'jeck'],
'sex' : ['male', 'female', 'male', 'male'],
'chinese' : [88, 83, 90, 78],
'math' : [96, 88, 86, 90],
'english' : [85, 80, 90, 75]
}
df = pd.DataFrame(scores) # 可传入 index=[...] 作为索引
series:有索引的类数组的数据结构,可作为DataFrame的一列
df['computer'] = pd.Series([65, 70, 85, 90])
读取 csv 文件(表格文件,有一定的格式,也可以是 xlsx 文件):
df = pd.read_csv('./form_test.csv') # 传入csv文件路径,返回数据类型为DataFrame
df.index # 获取索引
df.columns # 获取属性
df.head(i) # 获取属性行和表格前i行,默认5行
df.tail(i) # 获取属性行和表格最后i行
df.loc[i] # 查找行:根据索引,第二个参数可以传入属性
df.iloc[i] # 查找行:根据下标
df.ix[i] # 兼并loc和iloc功能
df.ix[:i] # 通过切片取前i行,可以用下标或者索引切片
df[df.math>90] # 筛选出数学成绩大于90的记录
df[(df.english>80)&(df.math>90)] # 复合筛选:英语成绩大于80且数学成绩大于90
df.drop(['english'], axis=1) # 删除指定列
df['english'] = [85, 80, 90, 75] # 添加指定列
df.sort_values(['math']) # 排序:属性列升序排序,可以传入多个属性进行排序
df.values # 全部转化为数组
df.math.values # 将指定列转化为数组
df.T # 转置
df.describe() # 统计(个数、均值、最大值、最小值等)
df.mean() # 均值
df.var() # 方差
df.sex.count_values() # 统计聚类(个数)
df.groupby('chinese').sum() # 将某一属性列求和
df.dropna() # 丢弃处理
df.fillna(value=0) # 填充处理,传入value填充值
def f(score):
if score >= 90:
return '优秀'
elif score >= 60:
return '及格'
else:
return '不及格'
df['数学分类'] = df['math'].map(f) # 对一列进行操作并生成新的一列
df['总分'] = df.apply(lambda x: x.chinese+x.math+x.english, axis=1) # 对多列进行操作并生成新的一列
df.applymap(lambda x: str(x)+' * ') # 对所有数据进行操作
df.as_matrix()
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 4).cumsum(0), columns=['A', 'B', 'C', 'D']) # 生成随机数据表格
df.plot() # pandas绘制线性图
plt.show() # 借助matplotlib弹窗显示
df = pd.DataFrame(np.random.randint(10, 50, (3, 4)), columns=['A', 'B', 'C', 'D']) # 生成随机数据表格
df.plot.bar() # pandas绘制柱状图
plt.show()
df = pd.DataFrame(np.random.randn(100, 4), columns=['A', 'B', 'C', 'D']) # 生成随机数据表格
df.hist() # pandas绘制直方图
plt.show()