数据的读取 1 2 3 import numpy as np import pandas as pd
1 2 df = pd.read_csv('https://raw.githubusercontent.com/xiryg/blog_picture/main/resource/data(%E9%80%9A%E5%B7%9E).csv' )
(107, 5)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 107 entries, 0 to 106
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 时间 107 non-null object
1 天气 107 non-null object
2 温度 107 non-null object
3 风向 107 non-null object
4 风级 107 non-null object
dtypes: object(5)
memory usage: 4.3+ KB
时间 天气 温度 风向 风级 count 107 107 107 107 107 unique 107 7 10 7 4 top 15日23时 多云 27℃ 东南风 <3级 freq 1 39 26 49 80
行的选择— 三种方法选取前5行 时间 天气 温度 风向 风级 0 15日23时 中雨 26℃ 东南风 <3级 1 16日02时 暴雨 26℃ 东风 <3级 2 16日05时 暴雨 26℃ 东南风 <3级 3 16日08时 中雨 27℃ 东南风 <3级 4 16日11时 小雨 30℃ 北风 <3级
时间 天气 温度 风向 风级 0 15日23时 中雨 26℃ 东南风 <3级 1 16日02时 暴雨 26℃ 东风 <3级 2 16日05时 暴雨 26℃ 东南风 <3级 3 16日08时 中雨 27℃ 东南风 <3级 4 16日11时 小雨 30℃ 北风 <3级
时间 天气 温度 风向 风级 0 15日23时 中雨 26℃ 东南风 <3级 1 16日02时 暴雨 26℃ 东风 <3级 2 16日05时 暴雨 26℃ 东南风 <3级 3 16日08时 中雨 27℃ 东南风 <3级 4 16日11时 小雨 30℃ 北风 <3级
时间 天气 温度 风向 风级 0 15日23时 中雨 26℃ 东南风 <3级 1 16日02时 暴雨 26℃ 东风 <3级 2 16日05时 暴雨 26℃ 东南风 <3级 3 16日08时 中雨 27℃ 东南风 <3级 4 16日11时 小雨 30℃ 北风 <3级
列的选择—三种方法选取前2列 时间 天气 0 15日23时 中雨 1 16日02时 暴雨 2 16日05时 暴雨
1 df.loc[:,['时间' ,'天气' ]].head(2 )
区域快的选择—三种方法选取前三行,前二列 时间 天气 0 15日23时 中雨 1 16日02时 暴雨 2 16日05时 暴雨
时间 天气 0 15日23时 中雨 1 16日02时 暴雨 2 16日05时 暴雨
1 df.loc[:,['时间' ,'天气' ]].head(3 )
时间 天气 0 15日23时 中雨 1 16日02时 暴雨 2 16日05时 暴雨
增加分析的条件,选取温度 >=30℃ 使用字符串相关操作替换℃符号并转换数据类型 1 df['温度' ] = df['温度' ].str .replace('℃' , '' ).astype(int )
时间 天气 温度 风向 风级 0 15日23时 中雨 26 东南风 <3级 1 16日02时 暴雨 26 东风 <3级
使用正则表达式替换℃符号并转换数据类型 1 2 import redf = pd.read_csv('https://raw.githubusercontent.com/xiryg/blog_picture/main/resource/data(%E9%80%9A%E5%B7%9E).csv' )
1 df['温度' ] = df['温度' ].apply(lambda x: re.sub(r'℃' , '' , x)).astype(int )
时间 天气 温度 风向 风级 0 15日23时 中雨 26 东南风 <3级 1 16日02时 暴雨 26 东风 <3级
0 False
1 False
2 False
3 False
4 True
...
102 False
103 False
104 False
105 False
106 False
Name: 温度, Length: 107, dtype: bool
1 df[df['温度' ] >= 30 ].head(5 )
时间 天气 温度 风向 风级 4 16日11时 小雨 30 北风 <3级 12 17日11时 小雨 30 东南风 <3级 20 18日11时 小雨 31 东风 <3级 21 18日14时 小雨 32 东北风 <3级 22 18日17时 小雨 30 东风 <3级
1 2 3 df1 = df.set_index('时间' ) df1.head(2 )
天气 温度 风向 风级 时间 15日23时 中雨 26 东南风 <3级 16日02时 暴雨 26 东风 <3级
1 2 3 df2 = df.set_index(['天气' ,'温度' ]) df2.head(2 )
时间 风向 风级 天气 温度 中雨 26 15日23时 东南风 <3级 暴雨 26 16日02时 东风 <3级
1 2 3 ch_df = df.copy() ch_df.head()
时间 天气 温度 风向 风级 0 15日23时 中雨 26 东南风 <3级 1 16日02时 暴雨 26 东风 <3级 2 16日05时 暴雨 26 东南风 <3级 3 16日08时 中雨 27 东南风 <3级 4 16日11时 小雨 30 北风 <3级
时间 天气 温度 0 15日23时 中雨 26 1 16日02时 暴雨 26
1 2 df_ch = df.drop(['风向' ,'风级' ],axis=1 )
时间 天气 温度 0 15日23时 中雨 26 1 16日02时 暴雨 26
数据的分组 时间 天气 温度 风向 风级 0 15日23时 中雨 26 东南风 <3级 1 16日02时 暴雨 26 东风 <3级
1 2 df['天气' ].value_counts()
多云 39
小雨 27
中雨 18
阴 14
暴雨 3
大雨 3
晴 3
Name: 天气, dtype: int64
1 2 len (df['天气' ].value_counts())
7
7
将所需要的字段作为索引,然后使用汇总函数进行汇总计算 C:\Users\86183\AppData\Local\Temp\ipykernel_8120\2078587693.py:1: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.
df.groupby('天气').mean()
温度 天气 中雨 28.000000 多云 28.769231 大雨 28.000000 小雨 28.444444 晴 28.666667 暴雨 26.000000 阴 27.785714
1 df.groupby('天气' ).mean(numeric_only=True )
温度 天气 中雨 28.000000 多云 28.769231 大雨 28.000000 小雨 28.444444 晴 28.666667 暴雨 26.000000 阴 27.785714
1 df.groupby('天气' )['温度' ].mean()
天气
中雨 28.000000
多云 28.769231
大雨 28.000000
小雨 28.444444
晴 28.666667
暴雨 26.000000
阴 27.785714
Name: 温度, dtype: float64
天气
中雨 18
多云 39
大雨 3
小雨 27
晴 3
暴雨 3
阴 14
dtype: int64
1 df.groupby(['天气' ,'风向' ]).size().head(5 )
天气 风向
中雨 东北风 3
东南风 9
东风 3
南风 1
西南风 2
dtype: int64
1 df.groupby('天气' ).get_group('晴' )
时间 天气 温度 风向 风级 67 24日08时 晴 31 南风 <3级 72 24日23时 晴 27 东南风 <3级 87 26日20时 晴 28 东南风 <3级
1 df.groupby('天气' ).get_group('中雨' ).head(3 )
时间 天气 温度 风向 风级 0 15日23时 中雨 26 东南风 <3级 3 16日08时 中雨 27 东南风 <3级 7 16日20时 中雨 25 东风 <3级
总结 数据集获取,输入地址即可
在 Jupyter notebook
交互比较好
loc
使用标签(label)进行索引,而 iloc
使用整数位置(integer position)进行索引。
也就是 loc (显式)
而 iloc (隐式)
loc
:通过标签(label)进行索引。它接受的参数是行和列的标签名称。例如,df.loc[row_label, column_label]
。loc
是基于标签的索引,包括起始和终止位置。
iloc
:通过整数位置(integer position)进行索引。它接受的参数是行和列的整数位置。例如,df.iloc[row_index, column_index]
。iloc
是基于整数位置的索引,从 0 开始计数。
从前面的:
1 df.loc[:,['时间' ,'天气' ]].head(2 )
产生的效果是一样的,应该可以理解 loc
和 iloc
的区别
1 df['温度' ] = df['温度' ].str .replace('℃' , '' ).astype(int )
df['温度']
:选中 温度
列.str.replace('℃', '')
:对选定的列使用 str.replace()
方法,将字符串中的 ‘℃’ 替换为空字符串。.astype(int)
:将处理后的字符串数据转换为整数类型。使用 astype()
方法,并传入 int
参数,将字符串转换为整数。1 df['温度'] = df['温度'].apply(lambda x: re.sub(r'℃', '', x)).astype(int)
apply()
方法,传入匿名函数 使用 re.sub
方法 通过正则表达式完成转换。
以上就是数据的读取与分组相关内容
笔记
备忘
随时看
望舒 春江潮水连海平,海上明月共潮生。