import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import datetime
data = pd.read_csv('./空气_2010.1.1-2014.12.31.csv')
data.columns
data.head()
data.info()
data['pm2.5'] # 查看pm2.5该列的数据
data['pm2.5'].isna() # 判断None值 返回布尔类型数据
data['pm2.5'].isna().sum() # 查看None的数量
2067
data.iloc[24:] # 从24行到最后一行
全有数据向前填充
data.iloc[24:].fillna(method = 'ffill') # 前向填充
指定列的插值填充
data['pm2.5'].interpolate() # 插值
示例1:
data['tm'] = data.apply(lambda x : datetime.datetime(year = x['year'],
month = x['month'],
day = x['day'],
hour = x['hour']),axis=1)
data.drop(columns=['year','month','day','hour','No'],inplace = True)
类似切片
data = data.iloc[:,:8]
data = data.set_index('tm')
data.cbwd.unique()
array([‘SE’, ‘cv’, ‘NW’, ‘NE’], dtype=object)
data.iloc[:,1:].to_numpy()
类似数据库查询中的groupby查询
先添加新的一列按月将数据划分
data['timeForMonth'] = data.apply(lambda x: str(x['year'])+"-"+'{:02}'.format(int(x['month'])), axis=1)
聚合,对指定的列按月划分求平均值等
dataForMonth = data.groupby('timeForMonth').agg({'pm2.5':'mean','DEWP':'mean','TEMP':'mean','Iws':'mean','Is':'sum','Ir':'sum'})
data['pm2.5'].plot()
生成新的data
data = data[['pm2.5', 'tm']]
data.列名.value_counts()
data.airline_sentiment.value_counts()
结果示例:
negative 9178
neutral 3099
positive 2363
Name: airline_sentiment, dtype: int64
data = pd.concat([data_a, data_b])
假如data_a的维度为4行6列,data_b为6行6列(列数相同),则data为10行6列
data2 = data.sample(2) # 随机取2条数据
data = data.sample(len(data)) # 乱序用法