1.pandas DataFrame部分
昨天讲了序列部分,今天来讲讲pandas的数据框,其实是昨天偷懒没写。环境还是一样,用spyder就好。
概念
数据框(DataFrame)用于存储多行和多列的数据集合,有点像Excel表格,它的不同列可以是不同的数据类型。
定义一个数据框
通过pandas的DataFrame函数通过字典来生成数据框,这个函数一般包含三个参数。
pandas.DataFrame(data=None,index=None,columns=None)
参数 | 说明 |
---|---|
data | 数据用字典表示,默认为空 |
index | 索引可以方便找到某个数据,默认为空 |
columns | 数据中要使用的列,用于控制列的顺序,默认为空 |
下面就来生成一个数据框
import pandas as pd
#定义数据框,通过data参数指定数据
dataframe=pd.DataFrame(
data={
'name':['a','b','c'],
'age':[20,22,29]
}
)
print(dataframe)
可以在变量框中点击dataframe看到生成的数据框的内容
如果需要自定义索引值,并且指定列的顺序就需要使用index,columns参数进行设置。
#通过index columns参数进行设置
df=pd.DataFrame(
data={
'name':['a','b','c'],
'age':[20,22,29]
},
index=['first','second','third'],
columns=['age','name']
)
可以看到索引行变成了我们设定的,而且列的顺序替换成我们设置的。
对DataFrame的增删改查
增添数据
使用append函数,添加的数据也要是数据框类型,第二个参数可以选择是否忽略新加入数据框的索引,默认是False不忽略。
#为df增加dataframe中的数据
df=df.append(dataframe)
#为df新增加一列数据
df['class']=[1,2,3,4,5,6]
记得新增加列的行数一定要与原本数据框的行数保持一致
删除数据
使用drop函数
pandas.DataFrame.drop(labels,axis=0,inplace=False,errors=‘raise’)
参数 | 说明 |
---|---|
labels | 要删除数据行对应的索引,可以一个或者多个 |
axis | 0代表index也就是行,1代表column也就是列 |
inplace | 是否修改原来的数据框,默认为False |
errors | labels不存在时是否报错,默认为raise也就是报错 |
#删除df索引为1的行
df=df.drop(1,axis=0)
#删除df列名为name的列
df=df.drop('name',axis=1)
更改数据
修改数据框中的值,索引或者列名都可以直接通过改变对应的值,再重新赋值来完成改变。
#更改数据框中的值,索引,和列名
df.columns=['A','B']
df.index=[1,2,3,4,5]
df.at[1,'A']=100
查找数据
一般我们数据分析对数据框进行查找时,一般会根据某些条件过滤再查找,这个过程也可以叫记录抽取。
#查找数据框中的值
print(df['A'])
print(df.iloc[2])
DataFrame运算的使用
#DataFrame数据计算
#目标:生成一个数据框,先对它求平方,再对它进行四则运算,最后把结果放入数据框
data=pd.DataFrame(
data={
'A':[1,3,5,7,9]
}
)
data['B']=data.A.pow(2)
data['add']=data.B+data.A
data['sub']=data.B-data.A
data['mul']=data.B*data.A
data['div']=data.B/data.A
#使用iterrows函数返回每一行数据,并且添加列c作为A+B的结果
for index,r in data.iterrows():
print(index)
print(r)
print('---------------')
c=[]
for index,r in data.iterrows():
c.append(r['A']+r['B'])
data['c']=c
2.数据的导入导出
数据导入
首先如果数据时以数据库的形式存放的话,只需要连接数据库,然后读取数据就可以了,我主要讲讲文件形式存放数据的导入方法。
csv文件的导入
csv文件是以逗号作为分隔符的一种纯文本文件
pandas导入csv文件主要用read_csv函数
常用的参数有filepath,sep,names,encoding。
filepath就是想要导入csv文件的路径,一般使用绝对路径,且用/或者\表示。
sep表示分隔符,一般csv文件默认是逗号。
names表示导入的列和指定列的顺序,默认按顺序导入所有列。
encoding表示文件编码,大多时候会让encoding=‘utf-8’。
txt文件的导入
txt文件也就是文本文件,应该是我们最常见的一种
导入txt文件我们一般用read_table函数
参数和read_csv函数中的一样
但是由于txt文件分隔符不确定,所以它的参数设置要比csv文件更准确,一般要设置好列名(names),分隔符(sep)和编码(encoding)
Excel文件的导入
Excel文件本身就很直观,而且也拥有计算,图标等功能
一般用pandas的read_excel函数来导入数据
它的参数只有路径名,读取的表格名,读取的列名,不过一般我们只用写好路径名就行了。
数据导出
我们处理完数据之后,想要把处理好的结果保存起来,就需要数据导出。
在pandas中我们用to_csv函数导出数据
参数和read_csv差不多一共有五个,文件路径,分隔符,索引,列名和编码
文件路径:记得最后写上.csv文件格式
分隔符:输出文件的分隔符,默认为逗号,也可以用制表符等等
索引:是否输出索引,默认为输出索引,如果不想要可以改为False
列名:是否输出列名,默认为输出列名
编码:默认为utf-8
3.总结
今天算是把昨天的任务都补上了,另外呢我也上传了我精心收集的一些关于python的学习资料,内容大概有将近4G,如果想学的小伙伴可以去下载,链接为
https://download.csdn.net/download/shelgi/11390809
希望大家能支持一下,毕竟收集这些资料我也花了不少精力和那啥嘛(不谈$,不然显得太俗,嘻嘻)。下次呢我会聊聊关于数据处理的内容,拜拜