Pandas入门
Series
: 数据系列,代表一位数据,比numpy中的一维数组强大。DataFrame
:数据窗/数据框/数据表,代表二维数据,封装了数据分析常用的各种方法。Index
: 索引,为Series
和DataFrame
提供数据索引服务
1.1Series
# 创建Series对象
ser1 = pd.Series(data=[320, 180, 360, 450, 520], index=[f'{x}季度' for x in '一二三三四'])
ser1
ser2 = pd.Series(data={'一季度': 320, '二季度': 180, '三季度': 450, '四季度': 520})
ser2
# 修改‘二季度’的值
ser2['二季度'] = np.nan
ser2
1.1.1 Series对象的方法
# 获取描述性统计信息 ---> 集中趋势
print(ser2.sum())
print(ser2.mean())
# 中位数
print(ser2.median())
print(ser2.quantile(0.5))
# 众数
print(ser2.mode())
# 获取描述性统计信息 ---> 离散趋势
print(ser2.max())
print(ser2.min())
print(ser2.var())
print(ser2.std())
# 上下四分位数
print(ser2.quantile(0.25))
print(ser2.quantile(0.75))
ser3 = pd.Series(['apple', 'banana', 'apple', 'pitaya', 'apple', 'pitaya', 'durian'])
ser3
ser4 = pd.Series(data=[10, 20, np.NaN, 30, np.NaN])
ser4
# 删除指定的值
ser4.drop(index=[2, 4])
# 给索引排序
# ascending ---> 默认为True(升序),False(降序)
ser1.sort_index(ascending=True)
# 给值排序
ser1.sort_values(ascending=False)
ser5 = pd.Series(['cat', 'dog', np.nan, 'rabbit'])
ser5
ser6 = pd.Series(np.random.randint(30, 80, 10))
ser6
def upgrade(score):
return score ** 0.5 *10
# ser6.map(upgrade).round(0)
# ser6.map(lambda x: x ** .5 * 10).round(0)
ser6.apply(lambda x: x ** .5 * 10).round(0)
线性归一化(标准化): X ′ = X i − X m i n X m a x − X m i n X' = \frac {X_{i} - X_{min}} {X_{max} - X_{min}} X′=Xmax−XminXi−Xmin
零均值归一化(中心化): X ′ = X i − μ σ X' = \frac {X_{i} - \mu} {\sigma} X′=σXi−μ
x_max, x_min = ser7.max(), ser7.min()
ser7.apply(lambda x: (x - x_min) / (x_max - x_min))
ser1.plot(kind='bar', color=['r', 'g', 'b', 'y', 'c'])
plt.xticks(rotation=0)
plt.grid(True, alpha=0.25, axis='y', linestyle=':')
plt.show()
ser1.groupby(level=0).sum()
ser1.groupby(level=0).sum().plot(kind='bar', color=['r', 'g', 'b', 'y'])
plt.xticks(rotation=0)
plt.grid(True, alpha=0.25, axis='y', linestyle=':')
plt.show()
temp = ser1.groupby(level=0).sum()
temp.plot(kind='pie', autopct='%.2f%%')
plt.ylabel('')
plt.show()
1.2 DataFrame
1.2.1 创建DataFrame对象
# 第一种: 通过二维数组创建DataFrame
# 第二种: 通过字典创建DataFrame
# 第三种:读取CSV文件创建DataFrame对象
df = pd.read_csv('data/订单.csv', sep=',', encoding='utf-8-sig', skiprows=range(1, 11), nrows=10)
df
# 第四种:读取Excel文件创建DataFrame对象
df = pd.read_excel(
'data/2020年销售数据.xlsx',
sheet_name='Sheet1',
usecols=('销售日期', '销售区域', '销售渠道', '销售数量')
)
df
df = pd.read_csv('data/2018年北京积分落户数据.csv')
df
# 第五种:通过SQL从数据库读取数据创建DataFrame对象
dept_df = pd.read_sql(
'select dno as no, dname as name, dloc as loc from tb_dept',
conn, index_col='no'
)
dept_df
emp_df.loc[1359, 'ename']='胡二刀'
emp_df