我用的是Visual Studio Code,直接创建了.ipynb后缀的文件,开始使用jupyber
pandas库引用
import pandas as pd
两种基本的数据结构:Series和DataFrame
(一)Series
Series对象效率挺高的,比如能直接将两个列表中的内容相加还是蛮方便的嘛
引用的方法很多,在此只简单列举传入列表、字典、n维数组
(1)传入列表
pd.Series([],index=[]),默认索引从0开始
添加索引
创建字典
传入n维数组
(二)DataFrame
DataFrame表格类型
传入字典pd.DataFrame({},columns=[],index=[]),行索引columns,列索引index
传入n维数组pd.DataFrame(np.array(),columns=[],index=[])
数据收集
读取csv文件
pd.read_csv(path, encoding='utf-8')
数据清洗
1)查看基本情况
df.info()查看数据基本信息
2)处理缺失值
当各列的非空数据数量与总行数不同时,就可能存在缺失值
df.isna()查看缺失值,True存在,False不存在
df.dropna() 删除包含缺失值的整行数据
df.dropna(subset=[''])删除指定列中含有缺失值的行
3)处理重复值
df.duplicated()查找重复行,可以采用df[df.duplicated()]的方法显示得更加直观
df.drop_duplicates()删除重复出现的整行数据
4)处理异常值
df.describe() 显示数据的统计信息,返回count、mean、std、min、25%、50%、75%、max,分别代表频数统计、平均值、标准差、最小值、第一四分位数、中位数、第三四分位数以及最大值,e+n代表10的n次方
df[<df>]抽取数据,eg.df['人数'<10]表示抽取人数小于10的数据
数据处理
从日期中抽取月份信息
pd.to_datetime(arg,format)函数:将object数据类型转为dataetime数据类型,arg是要转换的数据,format是datetime的日期格式,eg“%Y-%m-%d”
获取这份数据的年、月、日的信息,可以通过 Series.dt.year、Series.dt.month 以及 Series.dt.day
b=pd.to_datetime(a['日期'],format='%Y-%m-%d')
month=b.dt.month
添加新列
df['colname'] = Series,colname是新的一列的名字
数据写入
df.to_csv(path,encoding=‘’,index=False/True),index=False取消写入行索引,index=True写入行索引
分组聚合
单层分组:df.groupby(by),by是谁根据谁分组,eg、df.groupby(‘班级’),将数据对班级分组,分为1班,2班等
聚合:df.groupby(by)[‘列索引’].mean(),eg、df.groupby(‘班级’)[‘成绩’].mean(),就是求各班成绩的平均值
常见聚合操作:
min() | 求最小值 |
max() | 求最大值 |
std() | 求标准差 |
mean() | 求平均值 |
median() | 求中位数 |
sum() | 求总和 |
count() | 求数量 |
value_counts() | 求频数分布 |
多层分组聚合:df.groupby(['',''])[‘列索引’].mean()
针对多层分组聚合,可以用unstack()函数将series转换成dataframe表格样式,更加直观
数据可视化
绘制折线图:
单条折线图:s.plot(kind,figsize,title,use_index,xticks,yticks,rot,fontsize)
多条折线图:df.plot(kind,figsize,title,use_index,xticks,yticks,rot,fontsize)
kind | 设置图表类型 |
figsize | 设置图表大小(元组) |
title | 图表标题 |
use_index | 是否要用行索引作为x轴的刻度值 |
xticks | 横坐标的值 |
yticks | 纵坐标的值 |
rot | 刻度值的偏转角度 |
fontsize | 刻度值的字体大小 |
kind=‘line’是折线图,kind=‘tie’是饼图,kind=‘bar’是柱状图
matplotlib库
引用
from matplotlib import pyplot as plt
matplotlib库常用绘图函数
生成画布:plt.figure(figsize=(,))
保存:plt.savefig(path)
绘制折线图:plt.plot(x,y,color),x横坐标,y纵坐标
绘制柱状图:plt.bar(x,height,color,alpha,width),x=s.index,height=y=s.value,alpha是透明度,width是宽度
添加标题:plt.title(label,fontsize)
设置坐标轴刻度字体大小:plt.xticks(fontsize)、plt.yticks(fontsize)
设置坐标轴标题:plt.xlabel(xlabel,fontsize)、plt.ylabel(ylabel,fontsize)
还可以添加其他参数,水平对齐ha——'left'、'right'、'center',垂直对齐va——'center'、 'top'、'bottom'、'baseline',更详细的字体参数用fontdict
设置图例:plt.legend(labels),labels表示图表名称,一般传入列表,用于一个图中同时画柱状图和折线图这种情况时指代两个表名
设置标签:plt.text( x,y,s,ha,va, fontsize),x、y表示标签的位置,s是标签内容
ps:zip()函数,可以从 x、y 元素序列中依次取出元素,按照顺序进行一对一匹配