python 包之 pandas 数据分析处理教程
一、安装
-
pandas 是 python 的数据分析处理库
-
是为解决数据分析任务而创建的
-
pandas 纳入了大量库和一些标准的数据模型
-
提供了大量能使我们快速便捷地处理数据的函数和方法
pip install pandas
二、文件读取并查看信息
-
读取CSV、TXT文件
-
查看前N条、后N条信息
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
info.head(N)
info.tail(N)
# 查看数据框的格式,是DataFrame还是ndarray
print(type(info))
三、列的操作
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
# 查看有哪些列
info.columns
# 查看有几行几列
info.shape
# 重新排索引
info.reset_index(drop = True)
# 打印所有列的数据类型
info.dtypes
# 打印某一列、某几列数据
info["name"]
info[["age", "gender"]]
# 加减乘除:将每行都乘以100(加 减 乘 除 一样)
info[["age", "height"]] * 100
# 增加一列
new_col = info["waist"] * 100
info["waist"]= new_col
# 列之间的运算
info["age"] * info["waist"]
# 查看列的最大值、最小值、平均值
info["int_rate"].max()
info["int_rate"].min()
info["int_rate"].mean()
# 按某个字段排序 - 升序
info.sort_values("int_rate_one", inplace = True) # inplace是否新建一个dataframe,True不需要
# 按某个字段排序 - 降序
info.sort_values("int_rate_one", inplace = True, ascending = False)
# 根据条件打印某列数据
info[info["age"] == 20]
四、行的操作
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
# 打印某一行、某几行数据
info.loc[0]
info.loc[0:2]
info.loc[[2, 5, 10]]
# 自由取数据 如:取80行 age
info.loc[80, "age"]
五、数据框、空值、缺失值的操作
import pandas as pd
info = pd.read_csv("students.csv", encoding = "utf-8")
# 查看数据框的一些属性:最大、最小、均值、四分位数等
info.describe()
# 空值相关的操作
pin = info["pin"]
pin_isnull = pd.isnull(pin)
pin_isnull_list = info[pin_isnull]
len(pin_isnull_list)
# 缺失值相关操作, 简单的处理办法就是过滤掉null值
books = info["life_cycle_books"]
book_isnull = pd.isnull(books)
book_list_isnull = info["life_cycle_books"][book_isnull == False]
mean = sum(book_list_isnull) / len(book_list_isnull)
# 删除缺失值, 所有行
na_info = info.dropna(axis = 1)
# 删除缺失值, 可以指定列
na_info = info.dropna(axis = 0, subset = ["age", "name"])
六、数据透视表
import pandas as pd
import numpy as np
info = pd.read_csv("students.csv", encoding = "utf-8")
# index:要透视的列
# values:要比较的关系列
# aggfunc:具体的关系,默认值:np.mean
data_info = info.pivot_table(index = ["age", "name"], values = "height", aggfunc = np.mean)
print(data_info)
七、Series操作
-
pandas 有三种数据结构Series、DataFrame、Panel
from pandas import Series
# Series显示某一列数据
series_name = taitan["Name"]
series_name.values
# 取5-10行数据
series_custom[5: 10]
# index变换
old_index = series_custom.index.tolist()
sort_index = sorted(old_index)
new_index = series_custom.reindex(sort_index)
# Series按索引和值排序的函数
sc1 = series_custom.sort_index()
print(sc1)
sc2 = series_custom.sort_values()
print(sc2)
# Series 过滤
series_custom > 0.5
series_custom[series_custom > 0.5]
series_custom[(series_custom > 0.5) & (series_custom < 0.9)]
八、DataFrame操作
-
Series是一行数据,DataFrame是多行数据
-
DataFrame 可以看成由多个 Series 组成的
import pandas as pd
df = pd.read_csv("titanic_train.csv")
# DataFrame的索引变换
df_name = df.set_index("Name", drop = False)
# DataFrame查看某一类型的数据
types = df_name.dtypes
float_columns = types[types.values == "float64"].index
df_name[float_columns]
# DataFrame求方差
float_df = df_name[float_columns]
float_df.apply(lambda x: np.std(x))