1.读取csv文件
data=pd.read_csv('data.csv',encoding = "utf-8",header = 0,names = range(0,50),index_col=0)
header = 0是默认情况(即不标明,默认就是header = 0),表示以数据的第一行为列索引。
encoding = "utf-8"表明以utf-8为编码规则。
names = range(0,50))表示以[0…49]为列索引的名字
index_col=0表示以原有数据的第一列(索引为0)当作行索引。
2.处理NAN缺失值函数
df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
value为填充值;
axis: {0 or ‘index’, 1 or ‘columns’}
例:用均值填充NAN:
data.fillna(data.mean(),inplace=True)
3.获取指定几列
data1=data[['列名1','列名2','列名3']]
4.判断是否存在缺失值函数
data.isnull()
5.获取描述值(count,mean,std,max,min等)
data.describe()
6.解决图形中文无法显示问题
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False #优化坐标轴显示问题
7.绘制描述值散点图
import matplotlib.pyplot as plt
sta=data.describe()
plt.scatter(sta.loc['max'].index,sta.loc['max'],color='k',marker='v')
plt.scatter(sta.loc['min'].index,sta.loc['min'],color='k',marker='^')
plt.scatter(sta.loc['mean'].index,sta.loc['mean'],color='b',marker='+')
plt.scatter(sta.loc['50%'].index,sta.loc['50%'],color='b',marker='x')
plt.scatter(sta.loc['75%'].index,sta.loc['75%'],color='r',marker='v')
plt.scatter(sta.loc['25%'].index,sta.loc['25%'],color='r',marker='^')
plt.xticks([i for i in range(4)]) #防止右上角描述显示覆盖散点
plt.legend(['max','min','mean','median','75%','25%'])
plt.show()
8.增加一列并指定公式
data.loc[:,'增加列名']=data1['已存在列1']-data1['已存在列2']
9.获取pearson相关系数判断相关性
cor = data.corr()
10.增加x轴y轴标签
plt.xlabel('x')
plt.ylabel('y')
11.显示绘图标注
plt.legend(['玛卡巴卡'])
12.获取某列为指定值的数据集
data1=data[data['sex']==1]
13.获取某列均值
data.mean()
14.获取某列标准差
data.std()
15.随机拆分DataFrame为大小相等的df
import numpy as np
shuffled = data.sample(frac=1)
data4=np.array_split(shuffled, 2)
print(data4[1])
16.绘制阶梯图
plt.step(x, y)
17.绘制直方图
plt.hist(data,bins=25, density=True, stacked=True,color='y')
18.map函数使用
map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
19.plt设置图形名称
plt.title('玛卡巴卡图')
20.删除指定列、行
data=data.drop(columns=['列名1','列名1'])
data=data.drop(index=['行名1','行名1'])
21.输出数据前10行
data.head(10)
22.pd.set_option
# 使用pd.set_option设置只显示DataFrame最多10行样本,中间部分样本用省略号略过。
pd.set_option('display.max_rows',10)
data
23.删除名为‘#’的列
del df['#']
24.利用rename()修改列名,参数为字典
df.rename(columns=new_name,inplace='True')
25.查看某列数据的唯一值
# 法1
df['列名'].unique()
# 法2
df['列名'].value_counts()
26.选取指定类型值的列名
#标称型特征
nominal_array=(data.select_dtypes(include=['object'])).columns.tolist()
#数值型特征
numerical_array=(data.select_dtypes(exclude=['object'])).columns.tolist()
27.删除包含缺失值的样本
new_data=all_data.dropna(axis=1)
28.统计行数
#统计行数
row_num=all_data.shape[0]
29.获取各字段名称
#统计行数
col_array=all_data.columns.tolist()
30.plt绘制直方图
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False #优化坐标轴显示问题
plt.hist(all_data['G1'], bins=40, facecolor="blue", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("G1")
# 显示纵轴标签
plt.ylabel("成绩")
# 显示图标题
plt.title("G1成绩分布直方图")
plt.show()
31.truncate()选取df子集
truncate()常用参数有after和before,可传入标签。after之后的数据将全部删除,before之前的数据将全部删除。
32.dateutil.parser时间解析函数
from dateutil.parser import parse
parse('2018-5-2')
datetime.datetime(2018, 5, 2, 0, 0)
parse('May 2, 2018 10:30 AM')
datetime.datetime(2018, 5, 2, 10, 30)
33.绘制df某一列数据饼图
当数据类别较少时可以使用饼图
data['列名'].value_counts().plot(kind='pie',fontsize=14,autopct='%.1f%%',labels=['指定显示类别名'])
遇到数据类别较多,各块的比例和各块的标注重叠情况,可以增加如下参数:
pctdistance参数调整各比例数据离饼图中心的距离,pctdistance=1.1;
更改figsize参数将图变大,figsize=(7,7);
设定legend参数为True将饼图中各块的标注用图例表示,legend=True。
34.绘制df某一列数据条形图
当数据类别较多时可以使用条形图
ax = data['列名'].value_counts().plot(kind='bar',figsize=(9,6),rot=0,color=['pink','lavenderblush','cyan','hotpink','red','darkcyan'])
可以使用patches查看plot的输出的一系列图块:
ax.patches
在每一个图块的部分中,存储着相应的数据,使用get_height方法获取这些数据。
ax.patches[0].get_height()
对应的图块在条形图中x轴上的位置,使用get_x。
ax.patches[0].get_x()
35.绘制df某一列数据直方图
对于连续型变量,可以使用直方图来查看数据的分布情况,这时需要设定参数kind为hist
data['列名'].plot(kind='hist')
默认画的是频数图,如果想画频率图,可以修改参数density为True。
data['列名'].plot(kind='hist',density=True)
也可以调整cumulative参数为True绘制累积直方图。
data['列名'].plot(kind='hist',cumulative=True)
36.绘制df某一列数据箱线图
也可以使用箱线图查看连续型变量的分布情况,需要设定kind参数为box
data['列名'].plot(kind='box')
可以通过sym参数修改异常值点的颜色和标记样式。例如,将颜色改为绿色(green),样式改为十字叉。
data['列名'].plot(kind='box',sym='g+')
可以通过修改箱线图的return_type参数为dict使得绘图函数返回一个字典,这可以让方便地从图中提取一些数据。
box=data['列名'].plot(kind='box',return_type='dict')
box
'boxes’对应的是箱体部分,'fliers’对应的是异常值点,'whiskers’对应的是两条须。
box['boxes']#查看箱体部分
box['boxes'][0]#提取列表第一个元素获得相应的图块
box['boxes'][0].get_xydata()#使用get_xydata获取其对应的数据点
box['fliers'][0].get_ydata()#使用get_ydata获取对应的异常值
37.使用iterrows循环df
for index, row in data.iterrows():
print(row['列名1'])
38.更改列名
name_dict={}
data.rename(columns=name_dict,inplace=True) # inplace参数判断是否在原数据上进行修改
39.查看数据基本信息
data.info()
40.计算缺失值比例
p = data.isnull().sum()/len(data)
# 转变为百分数
data.apply(lambda x: format(x, '.1%'))
# 保留两位小数
data.apply(lambda x: format(x, '.2f'))
41.数据类型转换
data['列名1']=data['列名1'].astype('float')
42.根据某一列降序排序
data.sort_values('列名1',ascending=False,inplace=True)
43.设置某一列为新索引
data.set_index('列名1',inplace=True)
44.绘制水平条形图
data.plot.barh(subplots=True,layout=(1,3),sharex=False,figsize=(7,4),legend=False,sharey=True)
# layout参数为显示图形为1行,3列
plt.tight_layout() #调整子图间距
plt.show()
45.绘制饼图
data.plot.pie(autopct='%.1f%%',fontsize=10,ax=ax[1])
46.利用pyecharts中的Map()绘图
import pyecharts
# 调整配置项
import pyecharts.options as opts
# Map类用于绘制地图
from pyecharts.charts import Map
map_ = Map().add(series_name = " ", # 设置提示框标签
data_pair = data, # 输入数据(列表类型)
maptype = "world", # 设置地图类型为世界地图
is_map_symbol_show = False # 不显示标记点
)
# 设置系列配置项
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不显示国家(标签)名称
# 设置全局配置项
map_.set_global_opts(title_opts = opts.TitleOpts(title=" "), # 设置图标题
# 设置视觉映射配置项
visualmap_opts = opts.VisualMapOpts(pieces=[ # 自定义分组的分点和颜色
{"min": 10000,"color":"#800000"}, # 栗色
{"min": 5000, "max": 9999, "color":"#B22222"}, # 耐火砖
{"min": 999, "max": 4999,"color":"#CD5C5C"}, # 印度红
{"min": 100, "max": 999, "color":"#BC8F8F"}, # 玫瑰棕色
{"max": 99, "color":"#FFE4E1"}, # 薄雾玫瑰
],
is_piecewise = True)) # 显示分段式图例
# 在notebook中进行渲染
map_.render_notebook()
47.利用pyecharts中的Pie()绘图
from pyecharts.charts import Pie
pie = Pie().add(" ", # 添加提示框标签
data, # 输入数据
radius = ["20%", "80%"], # 设置内半径和外半径
center = ["60%", "60%"], # 设置圆心位置
rosetype = "radius") # 玫瑰图模式,通过半径区分数值大小,角度大小表示占比
#设置全局和系列配置项并绘制玫瑰图
pie.set_global_opts(title_opts = opts.TitleOpts(title=" ", # 设置图标题
pos_right = '40%'), # 图标题的位置
legend_opts = opts.LegendOpts( # 设置图例
orient='vertical', # 垂直放置图例
pos_right="85%", # 设置图例位置
pos_top="15%"))
pie.set_series_opts(label_opts = opts.LabelOpts(formatter="{b} : {d}%")) # 设置标签文字形式为(国家:占比(%))
# 在notebook中进行渲染
pie.render_notebook()
48.随机选取5行索引
index=np.random.choice(data.index,size=5)