- 数据访问
- 布尔筛选
- 统计信息
- 添加行数据和列数据
- 删除行数据和列数据
- 转换数据类型
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')