Pandas的概述
Pandas是python第三方库,提供高性能易用数据类型和分析工具
Pandas的基本操作
引入Pandas
import pandas as pd
读取cvs文件数据及相关操作
读取文件
values = pd.read_csv("file/test.csv")
获取多少行数据,默认是5行,可输入整数参数
values.head()
数据的基本信息,包括数据类型,有效数据数量等等
values.info()
--------- 输出 ---------
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Age 714 non-null float64
Cabin 204 non-null object
dtypes: float64(1), int64(1), object(1)
memory usage: 83.6+ KB
获取所有的列名称
values.keys()
--------- 输出 ---------
Index(['PassengerId', 'Age', 'Cabin'], dtype='object')
获取每一列都是什么类型,以及总的数据类型
values.dtype()
--------- 输出 ---------
PassengerId int64
Age float64
Cabin object
dtype: object
获取所有的数据,不包含列名称
values.values
获取所有数据的索引值
values.index
--------- 输出 ---------
RangeIndex(start=0, stop=891, step=1)
创建一个pandas中的DataFrame数据类型的数据及基本操作
创建数据
data = {
"country": [
"aaa", "bbb", "ccc"
],
"population": [
10, 20, 30
]
}
pd.DataFrame(data)
使用已有的列数据设置索引
data.set_index("country")
获取一整列数据
data["country"]
数据切片,和list的切片基本上一致
data["country"][:2]
数值简单计算
data["population"]["aaa"] + data["population"]["bbb"] # 元素之间的互相计算
data["population"].mean() # 计算列平均值
data["population"].mean(axis=1) # 计算行平均值
data["population"].max() 获取列最大值
data["population"].max(axis=1) # 获取行最大值
data["population"].min() # 获取列最小值
data["population"].mean(axis=1) # 获取行最小值
可以得到数据的基本统计特性
values.describe()
Pandas 索引操作
获取多个列数据
df = pd.read_csv("./file/titanic.csv")
df[["Age", "Fare"]].head()
获取数据两个方法 loc 和 iloc
loc 用lable定位数据
iloc 用position定位数据
loc获取一组数据
df.loc["Bob"]
iloc获取一组数据
# 获取1~5行的1~25列数据
df.iloc[0: 5, 1: 25]
数据判断
# 获取出年龄大于40的数据中的前5行
df[df["Age"] > 40].head()
判断值是否存在
s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype="int64")
s.isin([1, 2, 3])
--------- 输出 ---------
3 1
2 2
1 3
dtype: int64
双重索引
s2 = pd.Series(np.arange(6), index=pd.MultiIndex.from_product([[0, 1], ["a", "b", "c"]]))
--------- 输出 ---------
0 a 0
b 1
c 2
1 a 3
b 4
c 5
dtype: int64
通过多重索引获取对应的值
s2.iloc[s2.index.isin([(1, "a"), (0, "b")])]
--------- 输出 ---------
1 a 3
dtype: int64
数据筛选
df.where(df > 0, -df)
# 筛选数据,当前数据中大于0的获取出来,默认会将小于0的数据修改成NaN,-df 则表示取反值
列之间的数据判断
df.query("(a < b) & (b < c)")
groupb