Pandas/Numpy/Matplotlib 常用指令,语句

pandas作为python非常强大的处理数据的库文件,我对于之前用pandas处理车辆工况曲线时,用到了几条常用的命令。常用的还有Numpy和Matpotlib。

import pandas as pd                 #处理数据的
import numpy as np                  #处理数据的
import matplotlib.pyplot as plt     #画图表的,而且特别好看

#表格建立与数据写入
data = pd.read_excel('C:\\Users\\M\\Desktop\\python\\计算机学院研究生.xlsx')      #读取原始数据
data.to_excel('C:\\Users\\M\\Desktop\\output.xlsx')            #输出数据到excel
data = pd.DataFram(colums=list('ABCD'),index=list('1234') )    #生成一个DataFrame,行是ABCD,列是1234

#数据预处理
pd.concat([list2015,list2016,list2017,list2018,list2019])       #连接成总表,同列数据将拼接,未相交部分将为空集。
a = df.drop_duplicates(subset=['某列名'])     #去重,把某列中的重复数据去除(保留某列中的唯一数据)
b = pd.merge(df1, df2, on='某列名')       #找行交集,合并df1,df2中,某列中,数据相同的行,其他列取并集
#↓↓↓↓查找包含‘微课评选’字符的行,并且在其‘奖项类别’列,填上‘技术’。可以使用  '|'  来进行多个条件的筛选
df.loc[df['奖项名称'].str.contains('微课评选|微课'), '奖项类别'] = '技术'

#空值操作
list2015 = list2015.dropna(axis=0, thresh=10)       #删除空值大于10个的数据(行)。语法 DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
df_HonoraryTitle['某列名'] = df_HonoraryTitle['某列名'].fillna(value='填充的值')      #按照列,空数据插值
df = df.fillna(value='无')		#把df所有空值改成“无”

#数据操作
a = data['某列名']            #访问某列的所有数据
a = data.at['3行','2列']      #访问data中某一位置数据
a = data.loc['3行','2列']     #效果同上
a = data.loc['缪奇峰']        #访问缪奇峰(行)的所有数据
a = data.loc[(data['姓名'] != '缪奇峰')&(data['性别'] != '男'), '年龄']       #访问‘姓名’列中,不叫缪奇峰且性别不是男的,年龄数据

a = data.iloc[1,2]            #id定位,访问1行2列的数据

a = data.sort_values(by='出生日期')             #按照‘出生日期’的值进行排序
a = data[data.出生日期 > 19950101]              #访问出生日期大于19950101的人
data[data.出生日期 > 19950101] ='都是我小弟'     #出生日期大于19950101,值改成‘都是我小弟’

a = data.学号       #访问某一列的数据,数据类型为数组
a = data[10:45]     #data的10~45行的数据
a = data.生日.max() #生日这一列的最大值,最小为min()
a = data.学号.mean()#求学号这一列的平均值
a = data.shape      #表格的形状,行列数
a = data.shape[0]   #表格的行数,[1]为列
#列操作
df = df[['列1','列3']]      #提取多列,提取df中的,指定多列
a = data.columns.values     #提取列名到a
list2018.columns = a        #列名修改,把list2018的列名重命名为a[]
a = data.rename(columns={'荣誉名称':'项目'}) #列名修改,把'荣誉名称'列名改为'项目'
df['列1'] = df['列1'] + '-' + df['列2']     #列合并,把列1,列2内容合并,中间用‘-’连接
score = df_norm['某列'].str.split('/', expand=True) #列拆分,把‘某列’以‘/’为标识,拆分为两列,score为两列内容
df['新的一列'] = 0			# 添加新的一列,数值为0
df.insert(2, '分数', 0)		# 在第2列处插入‘分数’一列,数值为0
df = df.drop(columns = ['新的一列'])		# 删除‘新的一列’
totallist.rename(columns = {'教师姓名':'姓名'}, inplace = True) 		#列重命名,把‘教师姓名’改成‘姓名’

#numpy 已经使用的命令
a = np.arange(33)  #生成0~33的一个数组
a = np.nan          #a的值为空 NaN

#matplotlib 已经使用的命令
data = pd.read_excel('C:\\Users\\M\\Desktop\\数学建模\\运动学片段\\3低速\\final.xlsx')
plt.plot(data.speed, linewidth=2)  # 这里只指定了一个列表,那么就当作是输出参数,输入参数从0开始,就会发现没有正确绘制数据
plt.title("Driving Cycle vehicle_3", fontsize=24)  # 指定标题,并设置标题字体大小
plt.xlabel("Time(s)", fontsize=14)  # 指定X坐标轴的标签,并设置标签字体大小
plt.ylabel("Speed(km/h)", fontsize=14)  # 指定Y坐标轴的标签,并设置标签字体大小
plt.tick_params(axis='both', labelsize=14)  # 参数axis值为both,代表要设置横纵的刻度标记,标记大小为14
plt.show()  # 打开matplotlib查看器,并显示绘制的图形
plt.savefig('C:\\Users\\M\\Desktop\\数学建模\\运动学片段\\document1片段\\图表\\data.png')

# 进度显示小脚本
print('已完成',round(i/items_list.shape[0]*100.00,2), '%', end="\r")

# 增加一行
series = {'albumId': albumId, 'gName': gName,   }
df = df.append(series, ignore_index=True)

df[['id']] = df[['id']].values.astype(str)  # id数据类型改为str

# 遍历
iterrows()	    #: 按行遍历,将 DataFrame 的每一行迭代为 (index,Series) 对,可以通过row[name] 对元素进行访问。
itertuples()	#: 按行遍历,将 DataFrame 的每一行迭代为元组,可以通过 row[name] 对元素进行访问,比 iterrows() 效率高。
iteritems()	    #: 按列遍历,将 DataFrame 的每一列迭代为(列名, Series)对,可以通过 row[index] 对元素进行访问。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值