Pandas数据类型

series-一维,带标签数组

DataFrame-二维,series容器

读写文件

文本文件(txt,csv, etc.)

文本文件存储的数据表单一般以某个分隔符隔开(csv文件默认, )如下:

1
2
3
4
5
PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S

对于此类文本文件都可以通过 read_csv() 进行读取:

1
2
3
import pandas as pd

data = pd.read_csv(file_path, encoding="...", sep="\t")

其中,可以规定相应的编码方式和分隔符。

此外还有:

参数使用
filepath_or_buffer文件的URLDir位置。
sep代表分隔符,默认为csv(逗号分隔值)中的,
index_col该参数用于将所传递的列作为索引,而不是0,1,2,...,n
header该参数用于将传递的[int/int list]作为标题。
use_cols这个参数只使用传递的[字符串列表]来制作数据框。
squeeze如果是True并且只传递了一列,则返回pandas.Series
skiprows该参数用于跳过前 n 行。
skipfooter该参数用于跳过文件底部的 n行。

大型文件读取

打开和处理超大的 CSV 文件时需要考虑到计算机本身的内存限制。

使用 read_csv() 函数的 chunksize 参数来分块读取文件。这将返回一个迭代器,可以逐块读取文件。

1
2
3
4
5
import pandas as pd

chunksize = 1000000 # 设置块大小为100万行
for chunk in pd.read_csv('large_file.csv', chunksize=chunksize):
# 在这里处理每个块

在处理数据时尽量使用 Pandas 中的原地操作(inplace operation),以避免复制数据。比如要在数据中添加一列,可以使用 df['new_column'] = ... 而不是创建一个新的 DataFrame。

如果只需要读取个别列。使用 usecols参数:

1
df = pd.read_csv('large_file.csv', usecols=['col1', 'col2', 'col3'])

另外,还可以将不需要的数据类型转换为更小的类型。例如,如果数据中的整数都是正整数,则可以将它们转换为无符号整数类型。

1
df['col1'] = df['col1'].astype('uint32')

使用 low_memory=False 参数来读取整个文件到内存中。这样做可能会导致内存不足错误,但有时也可能比逐块读取更快。

1
df = pd.read_csv('large_file.csv', low_memory=False)

数据筛选

待更:python 数据全部显示,去掉中间省略号的终极办法_spyder读取excel有省略-CSDN博客
15_Pandas计算元素的数量和频率(出现的次数)_pandas统计元素个数-CSDN博客

数据合并

待更:详解pandas数据合并与重塑(pd.concat篇)_python_脚本之家 (jb51.net)

参考资料

1.解决VScode无法导入模块问题