Pandas基于Numpy构建
Pandas最初被作为金融数据分析而开发出来,因而Pandas为时间序列分析提供了很好的支持
安装:cmd窗口中输入
pip install pandas
使用时,要先导入
import pandas as pd
1.Pandas中的数据结构
1-1.Series----序列
from pandas import Series
# 1-创建Series
obj = Series([4, 7, -5, 3])
print(obj)
输出结果:(左边的是index,右边的是values)
0 4
1 7
2 -5
3 3
dtype: int64
# 2-获取index
print(obj.index)
输出结果:
RangeIndex(start=0, stop=4, step=1)
# 3-获取values
print(obj.values)
输出结果:
[ 4 7 -5 3]
# 4-可以指定索引---(例如将索引指定为日期)
obj = Series([4, 7, -5, 3], index=['3/1', '3/2', '3/3', '3/4'])
print(obj)
输出结果:
3/1 4
3/2 7
3/3 -5
3/4 3
dtype: int64
# 5-获取指定索引的值
print(obj['3/3'])
# 6-获取指定条件的值(如:获得大于0的值)
print(obj[obj>0])
# 7-in判断是否存在
print('3/3' in obj)----True
print('3/6' in obj)----False
# 8-通过字典创建Series
dict1 = {'3/1': 4, '3/2': 7, '3/3': -5, '3/4': 3}
print(dict1)
r = Series(dict1)
print(r)
1-2.DataFrame---数据框
from pandas import DataFrame
# 1-创建数据框(直接传入一个由等长列表或numpy数组组成的字典)
# 先定义2个列表
position = ['产品经理', '数据分析师', 'UI', '产品经理', '开发']
company = ['百度', '腾讯', '阿里', '网易', '京东']
df = DataFrame([position, company]) # 将两组数据合成一个表格
print(df)
输出结果:
0 1 2 3 4
0 产品经理 数据分析师 UI 产品经理 开发
1 百度 腾讯 阿里 网易 京东
# 2-将上述列子的第一行作为第一列
df = DataFrame([position, company]).T #---加.T
print(df)
输出结果:
0 1
0 产品经理 百度
1 数据分析师 腾讯
2 UI 阿里
3 产品经理 网易
4 开发 京东
# 3-columns指定列名
df.columns = ['职位名', '公司名']
print(df)
输出结果:
职位名 公司名
0 产品经理 百度
1 数据分析师 腾讯
2 UI 阿里
3 产品经理 网易
4 开发 京东
# 4-index指定行名
df.index = ['a', 'b', 'c', 'd', 'e']
print(df)
输出结果:
职位名 公司名
a 产品经理 百度
b 数据分析师 腾讯
c UI 阿里
d 产品经理 网易
e 开发 京东
# 5-1-重置index
print(df.reset_index(drop=True))
# 5-2-重置index,并保存之前的索引
print(df.reset_index())
# 6-显示前面n行数据
print(df.head(n))
# 7-显示后面n行数据
print(df.tail(n))
# 8-获取某一列的值
# 8-1-方式1
r = df["职位名"]
print(r)
# 8-2-方式2
r = df.职位名
print(r)
# 9-获取某一行的值
# 9-1-方式1
r = df.loc["c"]
print(r)
# 方式2
r = df.iloc[3]
print(r)
2-Pandas中一些常用的功能
import numpy as np
from pandas import Series
from pandas import DataFrame
# 创建一个数据框
# 先创建一个4x4的数组
arr = np.arange(16).reshape((4, 4))
# 1-指定行名和列名
df = DataFrame(data=arr, index=['a', 'b', 'c', 'd'], columns=['one', 'two', 'three', 'four'])
print(df)
输出结果:
one two three four
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
# 2-删除某行
r = df.drop('b')
print(r)
输出结果:
one two three four
a 0 1 2 3
c 8 9 10 11
d 12 13 14 15
# 3-删除某列
r = df.drop('two', axis=1) # axis=1表示按列执行
print(r)
输出结果:
one three four
a 0 2 3
b 4 6 7
c 8 10 11
d 12 14 15
# 4-查找x列,值为y的记录(将显示一行的值)
r = df[df["four"] == 7] # four列,值为7
print(r)
输出结果:
one two three four
b 4 5 6 7
# 5-唯一值 unique
# 先创建一个序列
obj = Series([1, 2, 2, 3, 3, 4, 5, 5, 5])
print(obj)
r = obj.unique()
print(r)
输出结果:
[1 2 3 4 5]
# 6-频率统计,value_counts(),频率从高到低排序
r = obj.value_counts()
print(r)
输出结果:
5 3
3 2
2 2
4 1
1 1
dtype: int64
# 7-频率统计,value_counts(),不排序
r = obj.value_counts(sort=False)
print(r)
输出结果:
1 1
2 2
3 2
4 1
5 3
dtype: int64
3.Pandas中常用的数学和统计函数
创建一个数据框
arr = np.arange(16).reshape((4, 4))
df = DataFrame(data=arr, index=['a', 'b', 'c', 'd'], columns=['one', 'two', 'three', 'four'])
print(df)
输出结果:
one two three four
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
# 1-describe,描述性统计分析
r = df.describe()
print(r)
输出结果:
one two three four
count 4.000000 4.000000 4.000000 4.000000
mean 6.000000 7.000000 8.000000 9.000000
std 5.163978 5.163978 5.163978 5.163978
min 0.000000 1.000000 2.000000 3.000000
25% 3.000000 4.000000 5.000000 6.000000
50% 6.000000 7.000000 8.000000 9.000000
75% 9.000000 10.000000 11.000000 12.000000
max 12.000000 13.000000 14.000000 15.000000
# 2-求和--对每一列
r = df.sum()
print(r)
输出结果:
one 24
two 28
three 32
four 36
dtype: int64
# 3-均值mean()--对每一列
r = df.mean()
print(r)
输出结果:
one 6.0
two 7.0
three 8.0
four 9.0
dtype: float64
# 4-累计求和cumsum--对行
r = df.cumsum()
print(r)
输出结果:
one two three four
a 0 1 2 3
b 4 6 8 10
c 12 15 18 21
d 24 28 32 36
# 5-求每一列的最大值
r = df.max()
print(r)
输出结果:
one 12
two 13
three 14
four 15
dtype: int32
# 创建一个数据框
position = ['产品经理', '数据分析师', 'UI', '产品经理', '开发']
company = ['百度', '腾讯', '阿里', '网易', '京东']
df = DataFrame([position, company]).T
print(df)
# 6-非数值型数据的描述性统计分析
r = df.describe()
print(r)
输出结果:
0 1
count 5 5
unique 4 5
top 产品经理 腾讯
freq 2 1
|