pandas学习-1

pandas学习

numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能能帮助我们处理其他类型的数据。

常用数据类型有:

  • Series一维,带标签(索引)数组
  • DataFrame二维,Series容器

pandas之Series创建

  • import pandas as pd
    
    t1 = pd.Series([1, 2, 31, 12, 3, 4])
    print(t1)
    print(type(t1))
    
  • 在这里插入图片描述

  • 可以指定索引创建Series

  • t2 = pd.Series([1, 23, 2, 2, 1], index=list("abcde"))
    print(t2)
    
  • 在这里插入图片描述

  • 可以传入字典创建Series

  • temp_dict = {"name": "xiaoming", "age": 30, "tel": 10086}
    t1 = pd.Series(temp_dict)
    print(t1)
    
  • 在这里插入图片描述

pandas之Series切片和索引

temp_dict = {"name": "xiaoming", "age": 30, "tel": 10086}
t1 = pd.Series(temp_dict)
print(t1["name"])
print(t1[["age", "tel"]])

print(t1.index)
# print(t1[t1>4])
print(t1.values)

print(np.ndarray)

Series对象本质上由两个数组构成

一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键->值

ndarray的很多方法都可以运用series类型,比如argmax,clip

Series具有where方法,但是结果和ndarray不同。

pandas之读取外部数据

df = pd.read_csv("./data")
print(df)

pandas之DataFrame

import pandas as pd
import numpy as np

t1 = pd.DataFrame(np.arange(12).reshape(3, 4))
print(t1)

在这里插入图片描述
DataFrame对象既有行索引,又有列索引。

设置索引创建DataFrame对象:

t2 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("wxyz"))
print(t2)

在这里插入图片描述
传入字典创建DataFrame对象:

d1 = {"name": ["xiaoming", "xiaohong"], "age": [20, 32], "tel": [10086, 10010]}
t3 = pd.DataFrame(d1)
print(t3)

d1 = [{"name": "xiaoming", "age": 20, "tel": 10010}, {"name": "xiaohong", "age": 23, "tel": 10086}]
print(d1)
t4 = pd.DataFrame(d1)
print(t4)

在这里插入图片描述

基本属性:

d1 = [{"name": "xiaoming", "age": 20, "tel": 10010}, {"name": "xiaohong", "age": 23, "tel": 10086}]
t4 = pd.DataFrame(d1)
print(t4.index)  # 行索引
print(t4.columns)  # 列索引
print(t4.values)  # 对象值
print(t4.shape)  # 行数和列数
print(t4.dtypes)  # 元素类型
print(t4.ndim)  # 维度

在这里插入图片描述

DataFrame整体情况查询

t4.head(3)  # 显示头部几行,默认5行
t4.tail(3)  # 显示末尾几行,默认5行
t4.info()  # 相关信息概览:行数,列数,列索引,列非空值个数,列类型,内存占用
t4.describe()  # 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值

DataFrame对象的切片

# 方括号里写数字,表示取行
print(t4[:1])
# 方括号里写字符串,表示取列
print(t4["name"])
# 取某行某列
print(t4[:1]["name"])

pandas之loc

还有更多的经过pandas优化过的选择方式

  • df.loc通过标签索引行数据
  • df.iloc通过位置获取行数据
t5 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("wxyz"))
print(t5)
a = t5.loc["a", "z"]
print(a)
print(t5.loc["a"])

pandas之布尔索引

print(t5[t5["z"] > 4])
print(t5[t5["row_name"].str.len() > 4])

不同条件之间需要用括号括起来,同时用&,|诸如此类的符号连接。

对电影数据进行处理:

import pandas as pd
from matplotlib import pyplot as plt

file_path = "./IMDB-Movie-Data.csv"
df = pd.read_csv(file_path)
print(df.head(1))
print(df.info())

runtime_data = df["Runtime (Minutes)"].values
max_runtime = runtime_data.max()
min_runtime = runtime_data.min()

# 计算组数
num_bin = (max_runtime - min_runtime) // 5

# 设置图形的大小
plt.figure(figsize=(20, 8), dpi=80)

# 绘制
plt.hist(runtime_data, num_bin)

# 设置座标轴的刻度
plt.xticks(range(min_runtime, max_runtime + 5, 5))

# 展示
plt.show()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章