使用pip安装Pandas:
pip install pandas
导入 Pandas包并起别名pd:
import Pandas as pd
创建DataFrame型数据
scores = {
'姓名' : ['johe', 'mike', 'tom', 'jeck'],
'语文' : [88, 83, 90, 78],
'数学' : [96, 88, 86, 90],
'英语' : [85, 80, 90, 75]
}
df = pd.DataFrame(scores)
读取csv文件(理解为表格文件,内容为纯文本,有一定的格式):
df = pd.read_csv('./form_test.csv') # 传入csv文件路径,返回数据类型为DataFrame
操作DataFrame数据
df.head(i) # 获取表头和表格前i行,默认5行
df.tail(i) # 获取表头和表格最后i行
df.columns # 获取表头所有列名
df.index # 获取索引
df.loc[i] # 根据索引i查找的值
df.iloc[i] # 实实在在的第i行,而不是根据索引查找
df.ix[i] # 相当于兼并loc和iloc功能
df.ix[:i] # 可以通过切片取前i行,iloc也一样
df[df.数学>90] # 筛选出数学成绩大于90的记录
df[(df.英语>80)&(df.数学>90)] # 符合筛选:英语成绩大于80且数学成绩大于90
df = df.drop(['英语'], axis=1) # 删除指定列
df['英语'] = [85, 80, 90, 75] # 添加指定列
df.sort_values(['数学']) # 排序:按照数学成绩升序排序,还可以传入多个参数进行排序
DataFrame转化成数组:
df.values # 全部转化
df.数学.values # 将数学那一列转化为数组
函数的使用(重点):
def f(score):
if score >= 90:
return '优秀'
elif score >= 60:
return '及格'
else:
return '不及格'
df['数学分类'] = df.数学.map(f) # 对一列进行操作并生成新的一列
df['总分'] = df.apply(lambda x: x.语文+x.数学+x.英语, axis=1) # 对多列进行操作并生成新的一列
df.applymap(lambda x: str(x)+' * ') # 对所有数据进行操作
Pandas自带绘图:
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()