mean()平均值 median()中位数 max()最大值 min()最小值 sum()求和 std()标准差
Series类型独有的方法: argmax()最大值的位置 argmin()最小值的位置
demo.py(pandas常用统计函数):
# coding=utf-8
import numpy as np
import pandas as pd
# 创建DataFrame
df = pd.DataFrame(np.arange(12, 32).reshape((5, 4)), index=["a", "b", "c", "d", "e"], columns=["WW", "XX", "YY", "ZZ"])
print(df)
'''
WW XX YY ZZ
a 12 13 14 15
b 16 17 18 19
c 20 21 22 23
d 24 25 26 27
e 28 29 30 31
'''
# mean()平均值 median()中位数 max()最大值 min()最小值 sum()求和 std()标准差
print(df.mean()) # 每一列平均值 (Series类型)
'''
WW 20.0
XX 21.0
YY 22.0
ZZ 23.0
dtype: float64
'''
print(df["YY"].mean()) # 22.0 指定列的平均值
print(df["YY"]) # Series类型
YY_list = df["YY"].tolist() # tolist()转换成list类型
print(YY_list) # [14, 18, 22, 26, 30]
print(len(YY_list)) # 5
print(len(set(YY_list))) # set集合可以去重
print(df["YY"].unique()) # [14 18 22 26 30] unique()自动去重(ndarray类型)
print(df.max()) # 每一列的最大值 Series类型。 min()最小值
'''
WW 28
XX 29
YY 30
ZZ 31
dtype: int64
'''
# argmax()某一列最大值的位置 argmin()最小值的位置
print(df["YY"].argmax()) # e
demo.py(应用实例,字符串的离散化,根据电影类型统计电影的数量):
# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
file_path = "./IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
# print(df["Genre"].head(3))
'''
0 Action,Adventure,Sci-Fi
1 Adventure,Mystery,Sci-Fi
2 Horror,Thriller
Name: Genre, dtype: object
'''
# 统计分类的列表
temp_list = df["Genre"].str.split(",").tolist() #[[],[],[]]
genre_list = list(set([i for j in temp_list for i in j])) # 两层for循环展开列表
# 构造全为0的数组
zeros_df = pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns=genre_list)
# print(zeros_df)
# 给每个电影出现分类的位置赋值1
for i in range(df.shape[0]):
#zeros_df.loc[0,["Sci-fi","Mucical"]] = 1
zeros_df.loc[i,temp_list[i]] = 1
# print(zeros_df.head(3))
# 统计每个分类的电影的数量和
genre_count = zeros_df.sum(axis=0)
print(genre_count)
'''
Drama 513.0
Sci-Fi 120.0
Action 303.0
Comedy 279.0
Crime 150.0
Thriller 195.0
Fantasy 101.0
dtype: float64
'''
# 排序
genre_count = genre_count.sort_values()
_x = genre_count.index
_y = genre_count.values
#画图
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(len(_x)),_y,width=0.4,color="orange")
plt.xticks(range(len(_x)),_x)
plt.show()