pandas处理df函数及plt绘图函数(作业总结笔记待补充...)

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)
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值