Series
创建
import pandas as pd
import numpy as np
c1 = pd.Series(np.arange(4), index=list("abcd"))
c2 = pd.Series({"name": "ccb", "age": 22, "tel": "10086"})
复制代码
切片
# 取索引
c2.index
# 取值
c2.values
# 通过键获取值
c2["name"]
# 获取不连续数据
c2[[1, 2]]
# 获取不连续数据
c2[["name", "tel"]]
复制代码
DataFrame
创建
df = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("wxyz"))
复制代码
# 效果
w x y z
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
复制代码
切片
# 取第一行
df[:1]
# 取前两行
df[:2]
# 取 x 列
df["x"]
# 设置索引的值
df.index=["a","c"]
# 设置某一列为索引
df.set_index("a")
# 设置a c两列为索引
df.set_index(["a","c"])
# 从复合索引中取值
s1["a","b"] # Series
df.loc["a"].["b"] # DataFrame
# 从里层索引开始选择,交换里外层索引位置
df.swaplevel()
复制代码
# 通过标签索引获取数据
s = df.loc["a":"b", :]
s1 = df.loc[["a", "c"], "w"]
s2 = df.loc["b", ["x", "y"]]
复制代码
# 通过位置索引获取数据
m1 = df.iloc[0:2, :]
m2 = df.iloc[[1,2],[0,2]]
复制代码
import pandas as pd
# 选择dog的名字使用次数超过700,并且名字的字符串长度大于4的dog名字
dn = pd.read_csv("./dogNames2.csv")
uu = dn[(dn["Row_Labels"].str.len() > 4) & (dn["Count_AnimalName"] > 700)]
print(uu)
复制代码
方法
df.info()
df.values
df.index
df.columns
df.shape # (3,4) 3行4列
df.shape[0] # 3行
df.shape[1] # 4列
df.head(3)
df.tail(3)
df["w"].max()
df["w"].min()
df["w"].median()
df["w"].argmax() # 最大值位置
df["w"].argmin() # 最小值位置
df.sort_values(by="age", ascending=False) # 降序排序
复制代码
缺失数据处理
pd.isnull(t)
pd.notnull(t)
复制代码
# 填充
t["w"].fillna(t["w"].mean())
复制代码