pandas学习 合并两个csv文件中的内容

例子来自于《python数据分析基础》这本书 -->将两个csv文件中的数据合并
7.1.1 葡萄酒质量

葡萄酒质量数据集包括两个文件,一个是红葡萄酒数据文件,另一个是白葡萄酒数据文
件,白葡萄酒是著名的葡萄牙“Vinho Verde”葡萄酒的一个变种。红葡萄酒文件中包含
1599 条观测,白葡萄酒文件中包含 4898 条观测。两个文件中都有 1 个输出变量和 11 个输
入变量。输出变量是酒的质量,是一个从 0(低质量)到 10(高质量)的评分。输入变量
是葡萄酒的物理化学成分和特性,包括非挥发性酸、挥发性酸、柠檬酸、残余糖分、氯化
物、游离二氧化硫、总二氧化硫、密度、pH 值、硫酸盐和酒精含量。
这两个数据集可以通过以下的 URL 下载:
• 红葡萄酒(http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv)
• 白葡萄酒(http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv)
我们不对这两个数据集分别进行分析,而是将它们合成了一个数据集。当你将红葡萄酒数
据和白葡萄酒数据合成一个文件后,结果数据集中应该包括一个标题行和 6497 条观测。
另外,还应该再添加一列,用来区分这行数据是红葡萄酒还是白葡萄酒的数据
。我们要使用的数据集如图 7-1 所示(请注意左侧的行号和第 A 列中新加的“type”变量)。

pandas学习 合并两个csv文件中的内容_第1张图片

先为两个文件添加type列,代码如下

为了向指定位置添加列 我们需要用insert函数
来看insert函数的定义
    def insert(self, loc, column, value, allow_duplicates=False):
        """
        Insert column into DataFrame at specified location.

        Raises a ValueError if `column` is already contained in the DataFrame,
        unless `allow_duplicates` is set to True.

        Parameters
        ----------
        loc : int
            Insertion index. Must verify 0 <= loc <= len(columns)
        column : string, number, or hashable object
            label of the inserted column
        value : int, Series, or array-like
        allow_duplicates : bool, optional
        """
        self._ensure_valid_index(value)
        value = self._sanitize_column(column, value, broadcast=False)
        self._data.insert(loc, column, value,
                          allow_duplicates=allow_duplicates)
#!/usr/bin/python3  
"""
知识点pandas如何向指定位置添加一列
"""
df = pd.read_csv("winequality-red.csv")
pf = pd.read_csv("winequality-white.csv")


df.insert(0, 'type', df)    # 先在第一列插入列名
df['type'] = "red"  # 然后给这一列赋值

pf.insert(0, 'type', pf)    
pf['type'] = "white"  

df.to_csv("red.csv")
pf.to_csv("white.csv")

我们成功的在左侧添加了type列,并且赋值了!
pandas学习 合并两个csv文件中的内容_第2张图片

现在我们开始合并两个文件

#!/usr/bin/python3  

import pandas as pd
import glob
import os


all_files = glob.glob(os.path.join("*.csv"))    # 遍历当前目录下的所有以.csv结尾的文件
all_data_frame = []
row_count = 0
for file in all_files:
    data_frame = pd.read_csv(file)
    all_data_frame.append(data_frame)
    # axis=0纵向合并 axis=1横向合并
data_frame_concat = pd.concat(all_data_frame, axis=0, ignore_index=True, sort=True)
data_frame_concat.to_csv("wine.csv", index=False, encoding="utf-8")     # 将重组后的数据集重新写入一个文件

合并完成!
pandas学习 合并两个csv文件中的内容_第3张图片

你可能感兴趣的:(Python学习)