pandas.DataFrame的一些基本操作

75 阅读2分钟
  1. 数据访问
  2. 布尔筛选
  3. 统计信息
  4. 添加行数据和列数据
  5. 删除行数据和列数据
  6. 转换数据类型
import pandas as pd

if __name__ == '__main__':
    file_path = "weather_nanjing_2023_transfer.csv"
    df = pd.read_csv(file_path)
    # DataFrame的数据访问、筛选、分割、合并、重塑、聚合以及转换等操作
    # 数据访问和筛选: 通过 .loc、.iloc 和 .query() 方法
    # 数据统计:如 .describe()、.mean()、.sum() 等

    # 返回一行:类型为 pandas.Series
    print(type(df.loc[0]))
    # print(df.loc[0])
    # 返回多行:类型依然是 pandas.DataFrame
    print(type(df.loc[[1, 2, 3]]))
    # print(df.loc[[1, 2, 3]])

    # 通过列名访问一列:类型为 pandas.Series
    # 所有行'白天天气'列
    print(type(df['白天天气']))
    print(type(df.loc[:, '白天天气']))
    # 多列:所有行 '白天天气', '白天风向'列
    print(type(df[['白天天气', '白天风向']]))
    print(type(df.loc[:, ['白天天气', '白天风向']]))
    # 通过列序号访问一列:所有行第0列
    # print(df.iloc[:, 0])
    # 通过列序号访问多列:所有行第1,2列
    # print(df.iloc[:, [1, 2]])
    # 访问单个元素:第0行'白天天气'列
    print(df['白天天气'][0])

    # 数据信息
    # print(df.info())
    # 描述统计信息
    # print(df.describe())
    # 求平均值
    # print(df.loc[:, "最高气温"].mean())
    # 求和
    # print(df.loc[:, "最高气温"].sum())

    # 添加行数据和列数据
    # 添加行
    new_row = {'日期': '2024-01-01', '最高气温': 36, '最低气温': 26}
    # df = df.append(new_row, ignore_index=True)
    # FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead
    new_row2 = pd.DataFrame([['2024-01-01', 36, 28]], columns=['日期', '最高气温', '最低气温'])  # 创建一个只包含新行的DataFrame
    df = pd.concat([df, new_row2], ignore_index=True)  # 将新行添加到原始DataFrame
    # 直接赋新值
    df.loc[304] = ['2024-01-02', 36, 28, '晴', '晴', '西风', '4-5级', '西北风', '3-4级']
    # 添加列
    df['温差'] = df["最高气温"] - df["最低气温"]
    df.loc[:, "温差2"] = df["最高气温"] - df["最低气温"]
    # 修改列
    df.loc[:, "温差2"] = df["温差"] + 1
    # 删除列
    # df = df.drop('温差', axis=1)
    # 删除索引为 0 的行
    df = df.drop(0)

    # 条件过滤 布尔 & | ~
    # df = df[df['最高气温'] > 20]
    df = df[(df['最高气温'] > 20) & (df['最低气温'] > 20)] # 多条件中每个条件都要使用括号
    print("*" * 50)
    # print(df.tail())

    # 数据类型
    #print(df.dtypes)
    # 转换数据类型
    #df['最高气温2'] = df['最高气温'].astype('float64')

Pandas_Cheat_Sheet

image.png

image.png