呆鸟的Python数据分析人工智能/模式识别/机器学习精华专题深度学习-推荐系统-CV-NLP

Pandas札记2_pandas基础

2019-07-24  本文已影响6人  皮皮大

写于本篇札记结束之后:今天晚上在图书馆写这篇札记的时候,心情很乱,很浮躁,因为工作的原因。最近真的很迷茫!希望快点结束这种状态!

Pandas的主要特点

Pandas是一个高性能的数据操作和分析工具

导入pandas

import pandas as pd
from pandas import Series, DataFrame  # 导入两个重要的数据结构

Series简介

Series主要是针对一维的数据,另外的DataFrame是针对多维数据的

image.png image.png
s = pd.Series([7, -3, -1, 9])
s

# 结果
0    7
1   -3
2   -1
3    9
dtype: int64

s.dtype  # 类型
s.values  #  查看值
s.index  # 查看索引
# 创建时候直接指定索引
s1 = pd.Series([7, -3, -4, 9, 5], index=["a", "b", "c", "d", "e"])
# 通过列表指定索引
s2 = pd.Series([7, -3, -4, 9, 5], index=list("abcde"))
s3 = pd.Series([7, -3, -4, 9, 5], index=list("12345"))
image.png image.png image.png
# Series中也有类似字典中的items()、keys()、values()
>>s4.items()   
<zip at 0x2428d151348>

>>list(s4.items())
[('1', 'shenzhen'), ('2', 'zhuhai'), ('3', 'guangzhou'), ('4', 'suzhou')]

>>list(s4.keys())
['1', '2', '3', '4']

>>s4[:]
1     shenzhen
2       zhuhai
3    guangzhou
4       suzhou
dtype: object
number = ["1", "2", "3", "5"]
s5 = pd.Series(dic, number)  # 结果中以指定的索引为准,如果原来的索引不存在指定结果为None
s5

# 结果
1     shenzhen
2       zhuhai
3    guangzhou
5          NaN
dtype: object
# pandas中通过isnull和notnull来检查元素的丢失情况
pd.isnull(s5)

# 结果
1    False
2    False
3    False
5     True
dtype: bool
image.png

DataFrame

DataFramePandas的二维数据结构,表示的是矩阵数据。

image.png
data = {
    'state':['beijing','beijing','beijing','shanghai','shanghai','shanghai'], 
    'year':[2000,2001,2002,2001,2002,2003],
    'pop':[1.5, 1.7,3.6,2.4,2.9,3.2]
    }
f = pd.DataFrame(data)
f

结果:


image.png
f.head()  # 查看前5行;默认是5行
f.head(3)  # 查看前3行
f.tail()  # 查看后5行数据
image.png
pd.DataFrame(data, columns=['year', 'state', 'pop'])  # 通过columns参数指定列属性的顺序
image.png
f2 = pd.DataFrame(data,  # 同时指定行索引和列索引
                  columns=['year', 'state', 'pop'], 
                  index=['a', 'b', 'c', 'd', 'e', 'f'])
image.png
f2['state']  # 查看某列的全部数据;一列的数据
f2.state   # 通过属性的形式检索,少用
f2.loc['a']   # 检索某行的数据
f2['debt'] = 12   # 增加一列数据
image.png
data = {'state':['beijing','beijing','beijing','shanghai','shanghai','shanghai'],
        'year':[2000,2001,2002,2001,2002,2003],
        'pop':[1.5, 1.7,3.6,2.4,2.9,3.2]
       }
df = pd.DataFrame(data, index=list('abcdef'))   # 创建DF数据
df
image.png
df1 = df.loc['a']   # 通过loc属性取某行的值
df1

# 结果
state    beijing
year        2000
pop          1.5
Name: a, dtype: object

>>f2['new'] = (f2['state'] == 'beijing')  # 先判断state属性中值为beijing,返回的是True;其他False
>>f2
image.png
# 删除某列;从DataFrame中选取的列是数据的视图,而不是拷贝;
# 对选取列的修改会反映到DataFrame上。如果需要复制,应当使用copy方法。
del f2['new']   
f2.columns

结果:

Index(['year', 'state', 'pop', 'debt', 'age'], dtype='object')
# 转置功能T
f2.T
image.png
f2.values  # 访问value
f.info()  # 查看DF的整体信息
f.drop(index=1)
# f.drop(index=[1,2])  删除两行数据drop
# 删除某列的数据f.drop(columns=["state","year"]) 
f.drop(columns=["state"]) 
import pandas as pd
# 创建字典类型数据,传入DF方法中
data =  {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
         'year': [2000, 2001, 2002,  2001, 2002, 2003],
         'pop': [1.5, 1.8, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data)
frame
image.png
# 改变列属性的顺序
pd.DataFrame(data, columns=['year', 'pop', 'state'])

# 不存在的列属性debt用None表示
frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
                      index=['one', 'two', 'three', 'four', 'five', 'six'])

# 获取所有的列属性和某列的值,得到的是一个Series类型数据
# 返回的索引和DF数据相同
print(frame2.columns)
frame2['state']   # 适用于任何列名

# loc属性:单个或多个
print(frame2.loc["three"])
frame2.loc[["two", "three"]]

# del 用于删除某个列
# 先为DF数据增加一个布尔列:根据state是否为"Nevada"
frame2["eastern"] = (frame2["state"] == "Nevada")
frame2
# del frame2["eastern"]
image.png
# 嵌套字典传给DF,外层字典的键作为列索引;内层字典的键作为行索引
pop = {'Nevada': {2001: 2.4, 2002: 2.9},
       'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame3 = pd.DataFrame(pop)
print(frame3)
frame3.T  # 转置功能
image.png
上一篇 下一篇

猜你喜欢

热点阅读