1. 导入与导出数据
import pandas as pd
pd.read_csv(filename) #从CSV文件导入数据
pd.read_table(filename) #从限定分隔符的文本文件导入数据
pd.read_excel(filename) #从Excel文件导入数据
pd.read_sql(query, connection_object) #从SQL表/库导入数据
pd.read_json(json_string) #从JSON格式的字符串导入数据
pd.read_html(url) #解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_clipboard() #从你的粘贴板获取内容,并传给read_table()
pd.DataFrame(dict) #从字典对象导入数据,Key是列名,Value是数据
如果要按特定的一列或者几列来加载,可以这么写:
df = pd.DataFrame(pd.read_csv('name.csv', usecols=['colname1','colname2','colname3']))
如果数据特别多,可能会导致内存爆炸,所以还可以分批加载数据:
chunk_size = 50
chunks = []
for chunk in pd.read_csv('name.csv', chunksize = chunk_size)
#分批数据处理
#分批数据分析
chunks.append(chunk)
df = pd.concat(chunks, axis = 0) # axis = 0行 axis = 1列
数据的导出:
df.to_csv(filename) #导出数据到CSV文件
df.to_excel(filename) #导出数据到Excel文件
df.to_sql(table_name, connection_object) #导出数据到SQL表
df.to_json(filename) #以Json格式导出数据到文本文件
2. 数据信息查看
df.shape #查看维度
df.info() #内存和数据类型
df.dtypes #每一列数据的格式
df.head(n) #浏览数据的前 n 行,默认 5 行
df.tail(n) #浏览数据的末尾 n 行,默认 5 行
df.sample(n) #随机浏览 n 行数据,默认 5 行
df.describe() #数据的分布情况
df.isnull() #空值
df['colname'].isnull() #查看某一列的空值
df['colname'].unique() #查看某一列的唯一值
df.columns #查看列的名称
3.数据表的清洗
df.fillna(value=0) #使用0来填充空值
df['colname'].fillna(df['colname'].mean()) #使用某列的均值来填充空值
df.columns = ['a','b','c'] #重命名列名
df.isnull() #检查DataFrame对象中的空值,并返回一个Boolean数组
df.notnull() #检查DataFrame对象中的非空值,并返回一个Boolean数组
df.dropna() #删除所有包含空值的行
df.dropna(axis=1) #删除所有包含空值的列
df.dropna(axis=1,thresh=n) #删除所有小于n个非空值的行
df['colname'].astype('int') #更改数据格式
df.rename(columns={'category': 'category-size'}) #更改某一列的名称
df['city'].drop_duplicates() #删除后出现的重复值
df['city'].drop_duplicates(keep='last') #删除先出现的重复值
df['city'].replace('sh', 'shanghai') #数据替换
df['city'].replace(['sh', 'bj'], ['shanghai', 'beijing']) #批量数据替换
4. 数据处理:Filter、Sort和GroupBy、数据合并
# Filter
df[df['colname'] > 0.5] #选择col列的值大于0.5的行
df.loc[index] #单行提取数据
df.loc[2:5] #多行提取数据,从2-5
df.iloc[2:5] #多行提取数据,从2-4(按区域)
df.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列
df.reset_index() #重设索引
df.loc[df_inner['city'].isin(['beijing','shanghai'])] #价格city中有shanghai和 beijing的数据提取出来
df.query('city == ["beijing", "shanghai"]') #使用query进行数据筛选
# Sort
df.sort_values('colname') #按照列排序数据,默认升序排列
df.sort_values('colname', ascending=False) #按照列col1降序排列数据
df.sort_values([col1,col2], ascending=[True,False]) #先按列col1升序排列,后按 col2降序排列数据
# GroupBy
df.groupby(col) #返回一个按列col进行分组的Groupby对象
df.groupby([col1,col2]) #返回一个按多列进行分组的Groupby对象
df.groupby(col1)[col2] #返回按列col1进行分组后,列col2的均值
df.pivot_table(index=col1, values=[col2,col3], aggfunc=max) #创建一个按列col1进
data.apply(np.mean) #对DataFrame中的每一列应用函数np.mean
data.apply(np.max,axis=1) #对DataFrame中的每一行应用函数np.max
#数据合并
df1.append(df2) #将df2中的行添加到df1的尾部
pd.concat([df1, df2],axis=1) #将df2中的列添加到df1的尾部
5. 数据统计
df.describe() #查看数据值列的汇总统计
df.mean() #返回所有列的均值
df.corr() #返回列与列之间的相关系数
df.cov() #数据表中所有字段间的协方差
df.count() #返回每一列中的非空值的个数
df.max() #返回每一列的最大值
df.min() #返回每一列的最小值
df.median() #返回每一列的中位数
df.std() #返回每一列的标准差
df.sample(n=3) #简单的数据采样
df.sample(n=6, replace=False) #采样后不放回
df.sample(n=6, replace=True) #采样后放回