数学建模代码

前言:作为一个数学建模的小白,负责代码数据部分,在第一天临近崩溃的状态下,还好第二天比较顺利,完成了自己的任务。
下面对这两天所遇到的问题进行汇总,避免下一次遇到类似的问题还要到处到解决方案…

  1. 使用read_csv()打开文件时,出现,各种编码问题,弄了很久,才发现我打开的是xslx文件而非csv文件,浪费了很多时间。
    csv和xslx的区别:CSV是文本文件,用记事本就能打开。XLS 是二进制的文件只有用 EXCEL 才能打开;CSV 文件格式只能保存活动工作表中的单元格所显示的文本和数值。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起

读取df = pd.read_csv(‘foo.csv’)
读取df = pd.read_excel('foo.xlsx)
写入 df.to_csv(‘hehe.csv’, index=False)
写入 df.to_excel(‘hehe.xlsx’, sheet_name=‘sheet1’, index=‘False’)

read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

常见参数讲解

  • header

header 若数据没有表头时,系统会自动将第一行作为表头,若不想让第一行作为表头,则需要添加header=None
若文件有表头,首先不能将header设置为None,否则会报错,其次将header设置为0,header=0,系统将第一行作为表头,但是也可以不用设置,如果有表头的情况下,系统会自动识别,将第一行设置为表头。

index_col
index_col=false
强制不使用第一行为行索引
index_clo=None
在默认为None的时候,pandas会自动将第一列作为索引,并额外添加一列。
index_col=0
所以大多我们会使用index_col=0,直接将第一列作为索引,不额外添加列。(常用!!!)

2.使用pandas绘图
在集训过程中,发现使用pandas 画图比matplib.pyplot 画图方便的多,他是基于matplotlib的,对于pandas数据,直接使用pandas本身实现的绘图方法比matplotlib更加方便简单。
参考博客1

参考博客2

注意:对于pandas绘图y轴中最好是指明columns=[' ']

举个例子:

#病死率
data1=pd.read_excel('result_death.xlsx',index_col=0)
print(data1.head())
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)
data1.sort_values(by='death_ratio',inplace=True, ascending=False) #
data_death=data1.iloc[0:10:,-1]
print(data_death.head())
ax=data_death.plot(kind='bar',figsize=(10,8),title='病死率前十国家',fontsize=20,grid=True)
plt.show()
ax.axes.title.set_size(15) #调整标题的大小
fig = ax.get_figure()
fig.savefig('death_ratio.png')

3.使用pandas对列或者行进行求和问题

dataframe.sum(axis=0) 0表示在列方向上求和,1表示在行方向上求和,求和后得到的是Series

参考文章

4.groupby操作

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值