numpy能够帮我们处理处理数值型数据,但是这还不够,很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等pandas的常用数据类型
numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据
Pandas 是一种开源数据分析工具,它提供了高性能、易于使用的数据结构和数据分析工具,用于处理各种类型的数据
Pandas 最主要的数据结构是 Series 和 DataFrame,Series 是一维标记数组,而 DataFrame 是二维表格数据结构,类似于关系型数据库中的表。
Pandas 支持从多种数据源读取数据,包括 CSV 文件、Excel 文件、数据库查询结果、以及 Web API 等。同时,Pandas 提供了强大的数据清洗、转换、合并等操作,使得数据处理变得更加简单高效。
1.Series 一维,带标签数组
2.DataFrame 二维,Series容器
pandas之Series创建
a=pd.Series([1,2,3,4,32,45,4]) print(a) # 创建包含三个字符串元素的 Series 对象,并为其添加标签索引 s = pd.Series(['apple', 'banana', 'orange'], index=['a', 'b', 'c']) # 打印输出 Series 对象 print(s)
其中,a、b、c 就是标签索引,object 是数据类型,每行分别表示该标签所对应的元素值。需注意,在创建 Series 对象时,数据序列的长度必须与标签索引的长度一致。
pandas之Series切片和索引
pandas 的 Series 数据类型支持多种不同的切片和索引方式,以下是其中几种常用的方法:
-
整数位置索引:使用整数值作为 Series 的索引。可以通过在方括号中传入整数索引来获取指定位置的元素。例如,若
s = pd.Series([10, 20, 30, 40])
,则可以通过s[0]
来获取第一个元素。 -
标签索引:使用字符串值作为 Series 的索引。可以通过在方括号中传入字符串索引的名称来获取指定标签的元素。例如,若
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
,则可以通过s['a']
来获取索引值为 'a' 的元素。 -
切片:可以使用方括号和冒号运算符来提取 Series 中的连续多个元素。例如,若
s = pd.Series([10, 20, 30, 40, 50])
,则可以通过s[1:4]
来获取从第二个到第四个元素(范围不包括终止位置)。 -
布尔索引:可以使用布尔值向量作为索引,以获取符合特定条件的元素。例如,若
s = pd.Series([10, 20, 30, 40])
,则可以通过s[s > 20]
来获取大于 20 的元素。
pandas之Series的索引和值
-
Series 的索引
Series 对象的索引是一组独立的数据,它们与数值部分建立了一一对应关系,用于定位和访问具体的值。Pandas 支持多种类型的索引,包括默认整数索引、字符串索引、时间戳索引等。
Series 对象的默认整数索引从 0 开始,逐渐递增。可以使用 index
属性查看/修改索引,并使用 values
属性查看 Series 对象中所有的数值。
import pandas as pd # 创建一个简单的Series对象 data = [1,2,3,4] s = pd.Series(data) # 查看Series的索引和数值 print(s.index) # RangeIndex(start=0, stop=4, step=1) print(s.values) # array([1, 2, 3, 4], dtype=int64) # 修改Series的索引 s.index = ['a','b','c','d'] print(s.index) # Index(['a', 'b', 'c', 'd'], dtype='object') print(s)
-
访问 Series 的值
Series 对象的数值可以通过访问其索引位置实现。Square bracket notation 方式是最常用的方式来访问 Series 对象中的单个值、切片和布尔型数组中的值。
import pandas as pd # 创建一个简单的Series对象 data = [1,2,3,4] s = pd.Series(data)
import numpy as np import pandas as pd from matplotlib import pyplot as plt file_path = "./IMDB-Movie-Data.csv" df = pd.read_csv(file_path) print(df["Genre"].head(3)) print("*******") # 统计分类的列表 temp_list = df["Genre"].str.split(",").tolist()#[],[],[] # print(df["Genre"]) genre_list=list(set([i for j in temp_list for i in j])) zeros_df=pd.DataFrame(np.zeros((df.shape[0],len(genre_list))),columns=genre_list) for i in range(df.shape[0]): zeros_df.loc[i,temp_list[i]]=1 # print(zeros_df.head(3)) genre_count=zeros_df.sum(axis=0) print(genre_count) genre_count=genre_count.sort_values() _x=genre_count.index _y=genre_count.values #画图 plt.figure(figsize=(15,8),dpi=80) plt.bar(range(len(_x)),_y) plt.xticks(range(len(_x)),_x) plt.show()