Pandas 使用
介绍
参考资料:
使用
工具
创建 DataFrame / Series
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import pandas as pd
pd.__version__
df = pd.DataFrame(...)
ser = pd.Series(...)
data = {"a": 1, "b": 2, "c": 3}
df = pd.DataFrame([data]) df = pd.DataFrame(data, index=[0]) df = pd.DataFrame(data, index=[0, 1, 2])
df = pd.DataFrame([data, data])
print(df)
|
快速查看数据信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| info() describe() head() tail() count() astype()
dtypes shape size index columns values ndim
is_unique name
df.corr()
|
索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ser[1] ser.iloc[1] ser["a"] ser.loc["a"]
df.loc[] df.iloc[]
df["col1"] df.col1 df.loc[:, "col1"] df.iloc[:, 0]
df[["col1", "col2"]] df.loc[:, ["col1", "col2"]] df.iloc[:, 2:5]
df.loc[1:3] df.loc[["a", "b"]] df.iloc[1:3]
df.loc[1:3, ["col1", "col2"]] df.loc[["a", "b", "c"], ["col1", "col2"]] df.iloc[1:3, 2:4]
|
筛选
1 2 3 4 5 6 7 8 9
| df[df["col1"] == "class1"] df[~df["col1"] == "class1"] df[df["col1"].isin(["class1", "class2"])]
df[df["col1"] > 0]
df[(df["col1"] > 0) & (df["col1"] < 1.0)]
|
统计
1 2 3 4
| df.sum() df.max() df.min() df.mean()
|
IO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| pd.read_csv()
sep comment header skiprows index_col usecols
df = pd.read_csv(csv_fn, sep=None, engine="python")
pd.read_excel()
sheet_name
df.to_csv()
index float_format
df = pd.DataFrame({ "A": [[1, 2, 3], [4, 5, 6], [7, 8, 9]], "B": ["x", "y", "z"] })
df.to_json("output.json", orient="records", lines=True)
pd.read_json("output.json", orient="records", lines=True)
{"A":[1,2,3],"B":"x"} {"A":[4,5,6],"B":"y"} {"A":[7,8,9],"B":"z"}
|
数据分组
groupby:对数据进行分组处理
1 2 3
| df.groupby("col1").mean() df.groupby("col1").max() df.groupby("col1").min()
|
map()、apply() 函数
lambda 匿名函数:主要用在 map()
、apply()
函数中
map()
:主要用于对 Series 中的每个元素应用一个函数或映射关系,常用于数据替换;映射中缺少与 Series 中的值相对应的键,则结果中相应的元素会被设置为 NaN
apply()
:可用于 DataFrame 和 Series
pandas apply 用法:(数据科学学习手札69)详解pandas中的map、apply、applymap、groupby、agg - 费弗里 - 博客园
1 2 3
| df[df["col1"] > 0] df[df["col1"].apply(lambda x: x > 0)]
|
其他
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| df["col1"] = pd.Categorical( df["col1"], categories=lst1, ordered=True, ) df["col2"] = pd.Categorical( df["col2"], categories=lst2, ordered=True, )
df.sort_values( by=["col1", "col2"], ignore_index=True, inplace=True, )
|
参数 inplace=True
:可使操作直接在 df 上执行,而非返回新的 DataFrame 对象
参数 ignore_index=True
:忽略索引
参数 axis=0
表示为行,axis=1
表示为列
1 2 3 4 5
| df.reset_index(drop=True, inplace=True) pd.concat([df1, df2], axis=...) df.sort_values(by=...) df.values.reshape(-1) df.round()
|
1 2 3 4 5 6 7 8 9 10
| df.diff()
df.unique() df.nunique()
df.nlargest() df.nsmallest()
pd.merge(df1, df2, how='outer')
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| df.drop()
df.value_counts(sort=False)
df.plot(kind="bar")
df.duplicated() df.drop_duplicates(, keep=..., inplace=...) keep
isnull() isna() dropna() fillna(value=0)
|