Pandas

一、什么是pandas?

                pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

二、常用数据类型

        1、 Series 一维,带标签数组 

        2、DataFrame 二维,Series容器

三、Series的创建(两种方法)

import string

import pandas as pd
import numpy as np
# 创建数组(1)
t = pd.Series(np.arange(10), index=list(string.ascii_uppercase[:10]))

# 创建数组(2)
a = {string.ascii_uppercase[i]: i for i in range(10)}
t1 = pd.Series(a)

# 更改索引号的变化情况
t2 = pd.Series(a, index=list(string.ascii_uppercase[5:15]))
print(t2)

运行结果 :(t2更改索引后,因为原数组K-O没值,所以显示NAN,且数据类型变为FLOAT)

 

 

四、切片(使用[ ])和索引(数组名.index)(数组名.values)

        

import string

import pandas as pd
import numpy as np

a = {'name': 'liming', 'age': 25, 'des': '学生'}
t = pd.Series(a)

# 切片
# 连续
# print(t[1:2])

# 不连续
# print(t[[0, 2]])

# bool
# print(t[t > 4])

# 不存在的索引(标签正常显示,值为NAN)
# print(t[["name"]])

### 索引(index)
#print(t.index)

# values
print(t.values)

五、pandas读取外部数据(DataFrame)

import pandas as pd
# pandas读取外部数据
df = pd.read_csv("./dogNames2.csv")

# pandas读数据库数据(Mysql)
# pd.read_sql(sql_sentence, connection)

# pandas读数据库数据(MongoDB)
# print(df)

# DataFrame
# 获取需要的data
data = pd.read_csv("./youtube_video_data/USvideos.csv")

df = pd.DataFrame(data)
#print(df)

# 显示前几行(默认前5行)
#print(df.head())
#print("*"*100)
# 显示后几行(默认前5行)
#print(df.tail())

# 显示概览
#print(df.info())
print(df.describe())


5.1 pandas排序(sort_values)

        sort_values(by , ascending  as )

                by:数据的title;ascending:排序方式(true升序,False降序)

5.2  pandas 取行取列(【】)

          df[:20]["Row_Labels"]

5.3 loc方法(索引)

t3 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list("abc"), columns=list("WXYZ"))
# print(t3.loc["a", "Z"])

# 取列
# print(t3.loc[:, "Z"])
# 取行
# print(t3.loc["a", :])

# 取多行
print(t3.loc[["a", "c"]])

# 取多列
print(t3.loc[:, ["X", "Y"]])

5.3 iloc方法

# iloc取数据
# 取行
#print(t3.iloc[1, :])
# 取列
print(t3.iloc[:, [2, 1]])

  5.4 bool索引(与numpy相似)

六、处理NAN

        6.1 删除

dropna(axis= , how = , inplace = ) axis代表行、列;how代表删除方式(默认为any);inplace原地替换

        6.2 填充

# 填充
# fillna()
#print(t3.fillna(t3.mean()))
print(t3["Y"].fillna(t3["Y"].mean()))# 填充
# fillna()
#print(t3.fillna(t3.mean()))
print(t3["Y"].fillna(t3["Y"].mean()))

6.3处理0(直接赋值为NAN) 因为NAN不参与运算

Q对于这一组电影数据,如果我们想rating,runtime的分布情况,应该如何呈现数据?

import matplotlib
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd

# 设置中文字体
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold'}

matplotlib.rc("font", **font)

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

file_path = "./IMDB-Movie-Data.csv"

df = pd.read_csv(file_path)

print(df.head(1))

print(df.info())

# Rating,Runtime分布情况
# 选择图形,直方图
# 准备数据
runtime_data = df["Runtime (Minutes)"].values

max_runtime = runtime_data.max()
min_runtime = runtime_data.min()

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

plt.hist(runtime_data, num_bin)

plt.xticks(range(min_runtime, max_runtime+d, d))

plt.grid()

plt.show()

结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值