Pandas 是一个强大的数据分析库,它提供了一个名为 DataFrame 的数据结构,类似于 R 中的 data.frame。DataFrame 是一个二维的、标签化的数据结构,可以包含不同数据类型的列。它提供了许多方便的功能,如数据选择、过滤、合并、排序等,使得数据分析和处理变得更加容易。Pandas 的 DataFrame 是为了更方便地处理表格形式的数据而设计的,提供了丰富的功能和方法。虽然它在数据分析和处理中非常流行,但并不是 Python 中唯一的数据格式。
一、Pandas获取数据信息函数
Pandas 库是机器学习四个基础库之一, 它有着强大的数据分析能力和处理工具。它支持数据增、删、改、查;支持时间序列分析功能;支持灵活处理缺失数据;具有丰富的数据处理函数;具有快速、灵活、富有表现力的数据结构:DataFrame 数据框和 Series 系列。
DataFrame 数据框 | Series 系列 |
---|---|
[pandas官方学习文档](http://pandas.pydata.org/docs/reference/index.html)
数据存储路径或工作路径
import os
import pandas as pd
print(os.getcwd()) # 获取当前工作目录
数据信息
nba = pd.read_csv("nbaallelo.csv")
#https://github.com/fivethirtyeight/data/blob/master/nba-elo/nbaallelo.csv
type(nba)) #数据类型
len(nba) #数据长度
nba.shape #数据维度
nba.head() #前5行数据
nba.info() #数据结构
nba.sample(10) #抽取10个样本
nba.describe() #数值型数据的四分位数
print(nba.describe())
二、读写*.csv数据
- 文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。
- csv 是一种逗号分隔的文件格式,因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。
2.1 文件读取
CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。
read_csv(filepath_or_buffer, sep=',', header='infer', names=None, index_col=None, dtype=None, engine=None, nrows=None)`
参数名称 | 说明 |
---|---|
filepath | 接收 string。代表文件路径。无默认。 |
sep | 接收 string。代表分隔符。read_csv 默认为' , ',read_table 默认为制表符 '[Tab]'。 |
header | 接收 int 或 sequence。表示将某行数据作为列名。默认为 infer,表示自动识别。 |
names | 接收 array。表示列名。默认为 None。 |
index_col | 接收 int、sequence 或 False。表示索引列的位置,取值为 sequence 则代表多重索引。默认为 None。 |
dtype | 接收 dict。代表写入的数据类型(key:列名,values:数据格式)。默认为 None。 |
engine | 接收 C 或者 Python。代表数据解析引擎。默认为 C。 |
- sep 参数是指定文本的分隔符,如果分隔符指定错误,在读取数据的时候,每一行数据将连城一片。
- header 参数是用来指定列名,如果是 None 则会添加一个默认的列名。
- encoding 代表文件的编码格式,常用的编码有 utf-8、utf-16、gbk、gb18030、big5 等。如果编码指定错误,数据将无法读取,Ipython 解释器会报解析错误。
import pandas as pd
pd.read_csv(r"nbaallelo.csv")
gameorder game_id lg_id ... game_result forecast notes
0 1 194611010TRH NBA ... L 0.640065 NaN
1 1 194611010TRH NBA ... W 0.359935 NaN
2 2 194611020CHS NBA ... W 0.631101 NaN
3 2 194611020CHS NBA ... L 0.368899 NaN
4 3 194611020DTF NBA ... L 0.640065 NaN
2.2 数据存储
结构化数据通过 Pandas 中的 to_csv 函数实现以 csv 文件格式存储文件。
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', columns=None, header=True, index=True, index_label=None, mode='w', encoding=None)
参数名称 说明
path_or_buf 接收 string。代表文件路径。无默认。
sep 接收 string。代表分隔符。默认为 ','。
na_sep 接收 string。代表缺失值。默认为 ' '。
columns 接收 list。代表写出的列名。默认为 None。
header 接收 boolean。代表是否将列名写出。默认为 True。
index 接收 boolean。代表是否将行名(索引)写出。默认为 True。
index_label 接收 boolean。代表索引名。默认为 None。
mode 接收特定 string。代表数据写入模式。默认为 w。
encoding 接收特定 string。代表存储文件的编码格式。默认为 None。
from sklearn.datasets import load_iris
import pandas as pd
# 加载iris数据集
iris = load_iris()
# 创建DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
output_csv_file = 'iris_dataset.csv'
df.to_csv(output_csv_file, index=False)
三、读取Clipboard数据
读数据 | 写数据 |
---|---|
#预先剪贴板上已经复制数据
import pandas as pd
df = pd.read_clipboard() #读取剪切板中的数据
print(df)
四、读取*.xlsx数据
使用pandas的read_excel()方法,可通过文件路径直接读取。注意到在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件、并同时指定sheet下的数据。可以一次读取一个sheet,也可以一次读取多个sheet,同时读取多个sheet时后续操作可能不够方便,因此建议一次性只读取一个sheet。当只读取一个sheet时,返回的是DataFrame类型,这是一种表格数据类型,它清晰地展示出了数据的表格型结构。
pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,
dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,
na_values=None,keep_default_na=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,
comment=None,skip_footer=0,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)
参数说明:
io:文件路径 io = r’D:\test.xlsx’
sheet_name:表名,可指定读取单表、多表、全部表
sheet_name = None # 读取全部表,得到 OrderDict:key为表名,value为 DataFrame
sheet_name = 1 / “Sheet1” # 读取单表,返回 DataFrame
sheet_name = [0, 1] / [“Sheet1”, “Sheet2”] # 读取多表,返回一个OrderDict
header:指定抬头(含列名的标题行)
names:设置列名,必须是list类型,且长度和列数一致
names = [“Student_No.”, “Name”, “Score”]
usecols:使用的行
usecols = range(1, 3) # 使用 [1, 3) 行,不包括第 3 行
usecols = [4, 7] # 使用 4和7 行
skiprows:指定跳过的行数(不读取的行数)
(1)不指定sheet参数,默认读取第一个sheet
df=pd.read_excel(“data_test.xlsx”,header=None)
(2)指定sheet名称读取
df=pd.read_excel(“data_test.xlsx”,sheet_name=“test1”,header=None)
(3)指定sheet索引号读取
df=pd.read_excel(“data_test.xlsx”,sheet_name=0,header=None) #sheet索引号从0开始
#默认有表头的读取方式,不带表头的读取添加参数header=None
有表头(推荐) | 无表头 |
---|---|
import pandas as pd
from openpyxl.workbook import Workbook #提示要安装这个库,原因不明
from sklearn.datasets import load_iris
# 加载iris数据集
iris = load_iris()
# 创建DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
# 将DataFrame写出为Excel文件
output_excel_file = 'iris_dataset.xlsx'
df.to_excel(output_excel_file, index=False)
print(f"DataFrame已成功写出到 {output_excel_file}")
读取Excel文件
read_df = pd.read_excel(output_excel_file)
# 显示读取的数据的前5行
print("\n读取的Excel文件的前5行:")
print(read_df.head())
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2