文章目录
一、pandas是什么?
1、Pandas是Python的一个数据分析包,该工具为解决数据分析任务而创建。
2、Pandas纳入大量库和标准数据模型,提供高效的操作数据集所需的工具。
3、Pandas提供大量能使我们快速便捷地处理数据的函数和方法。
4、Pandas是字典形式,基于NumPy创建,让NumPy为中心的应用变得更加简单。
二、常用函数
1.读入csv数据
import pandas as pd
pd.read_csv("girl.csv")
read.csv()中有很多其他参数可以选择。
pd.read_csv('girl.csv', sep='\t')#sep分隔符
pd.read_csv('girl.csv',delim_whitespace=True)#分割所有空白字符
还有header和name参数
#当header和name都没赋值时,header为0,即选取文件的第一行作为表头
# 不指定names,指定header为1,则选取第二行当做表头,第二行下面为数据
pd.read_csv('girl.csv',delim_whitespace=True, header=1)
#指定name,不指定header,则把name当作表头,csv中的所有当数据
pd.read_csv('girl.csv', delim_whitespace=True
, names=["编号", "姓名", "地址", "日期"])
#可以看到,names适用于没有表头的情况,
pd.read_csv('girl.csv', delim_whitespace=True,
names=["编号", "姓名", "地址", "日期"], header=0)
#可以实现替换表头
#总之,必须有表头。
2.数据处理
2.1 iloc()
对dataframe类型数据进行处理:
A | B | C | D | |
---|---|---|---|---|
a | 0.560094 | 0.352686 | 0.954100 | 0.926277 |
b | 0.563728 | 0.335517 | 0.232902 | 0.973932 |
c | 0.482155 | 0.976618 | 0.565462 | 0.44510 |
d | 0.47714 | 0.933353 | 0.291764 | 0.986668 |
iloc 基于行索引和列索引(index,columns) 都是从 0 开始
如果数据的行标签和列标签名字太长或不容易记,则用 iloc 很方便,只需记标签对应的索引即可
### .loc先行后列,中间用逗号(,)分割,例如取 a 和 A 对应的数据
frame.iloc[0,0]
#结果:0.56009394013943303
### 取前两行对应数据
frame.iloc[0:2,:]
A | B | C | D | |
---|---|---|---|---|
a | 0.560094 | 0.352686 | 0.954100 | 0.926277 |
b | 0.563728 | 0.335517 | 0.232902 | 0.973932 |
### 取前两列对应数据
frame.iloc[:,0:2]
A | B | |
---|---|---|
a | 0.560094 | 0.352686 |
b | 0.563728 | 0.335517 |
c | 0.482155 | 0.976618 |
d | 0.47714 | 0.933353 |
### 上面的例子取的都是连续的行和列,若取第一行和第四行、第一列和第四列对应的数据,则
frame.iloc[[0,3],[0,3]]
2.2、创建dataframe格式数据
有很多种方式可以获得df格式的数据。我认为主要分为三大类:
1:直接从文件中读取得到df数据
2:先创建一个空的,再往里赋值
3:从其他格式转换为df格式(都是使用pd.DataFrame函数)
这里面我日常使用中第一和第三种方式最为常用。第一种可以往上翻看读取数据。
这里主要介绍下第三种
2.2.1 list转df
import pandas as pd
new_lists =[ [1,2,3,4,5], [7,8,9,10,11], {1,2,3,4,5}]
df2 =pd.DataFrame(new_lists, columns = ["image","quality","type","Retinopathy_grade","Risk_of_macular_edema"])
print(df2)
image quality type Retinopathy_grade Risk_of_macular_edema
0 1 2 3 4 5
1 7 8 9 10 11
2 1 2 3 4 5
原来列表里有集合也不影响。
注意:list的列数要和你自己设置的列数一致,不然会报错。
也可以指定每行index = [ ‘i.’, ‘ii.’,“iii” ]
df2 =pd.DataFrame(new_lists, columns =
["image","quality","type","Retinopathy_grade","Risk_of_macular_edema"],
index = [ 'i.', 'ii.',"iii" ])
image quality type Retinopathy_grade Risk_of_macular_edema
i. 1 2 3 4 5
ii. 7 8 9 10 11
iii 1 2 3 4 5
但也要注意行数和lisi的行数要一致不然会报错。
2.2.2 numpy转df
import numpy as np
data_np =np.random.randint(100, size=(4, 3))
data_df = pd.DataFrame(data_np)
print(data_df)
0 1 2
0 70 36 79
1 38 17 29
2 63 45 74
3 21 25 2
3、赋值
今天在对df数据进行重新赋值时使用:
df.iloc[行,列] = a
虽然没有报错,但数据没有改变。要用下面的方法才会正确赋值:
df[列,行] = a