Pandas知识点总结

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 15:43   108   0

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP