数据导入和导出

# 导入
pd.read_csv("z:/data.csv", low_memory=True,encoding="utf-8",sep=",")#读取csv文件内容
pd.read_table(file_name)    #从限定分隔符的文本文件导入数据
pd.read_excel(file_name)    #从Excel文件导入数据
pd.read_sql(query, connection_object) #从SQL表/库导入数据
pd.read_json(json_string)   #从JSON格式的字符串导入数据
pd.read_html(url)       #解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.DataFrame(dict)        #从字典对象导入数据,Key是列名,Value是数
# 导出
df.to_csv("z:/data_new.csv", index=False)    #不保存行索引,默认行列索引True
df.to_excel(filename)               #导出数据到Excel文件
df.to_sql(table_name, connection_object)     #导出数据到SQL表
df.to_json(filename)                 #以Json格式导出数据到文本文件

显示数据内容

df.head(n)    # 前n行数据,默认5
df.tail(n)    # 后n行数据,默认5
df.shape()    # 形状
df.info()    # 显示索引、数据类型和内存信息
df.describe()    # 显示数值型列的汇总统计
df.columns.values    # 显示所有列名称(值)
df.columns.tolist()    # 显示所有列名称(列表形式)
# set_option
pd.set_option(\'display.max_columns\', None)    #显示所有列(不忽略)
pd.set_option(\'display.max_rows\', None)    #显示所有行(不忽略)
pd.set_option(\'chop_threshold\', 0.5)    # 绝对值小于0.5的显示0.0
pd.set_option(\'colheader_justify\', \'left\')#显示居中还是左边
pd.set_option(\'precision\', 5)    #显示小数点后的位数
pd.set_option(\'expand_frame_repr\', False)#True就是可以换行显示
pd.set_option(\'display.width\', 200) #横向最多显示多少个字符

创建数据

pd.DataFrame(np.random.rand(200,10)) #创建200行10列的随机0-1之间的数组成的DataFrame对象
pd.Series(list)    #从可迭代Series对象

统计

df.value_counts(sort=True))   #统计该字段的唯一内容数量
df.describe()                 #查看数据值列的汇总统计
df.mean()                     #所有列的均值
df.corr()                     #列与列之间的相关系数
df.count()                    #每一列中的非空值的个数
df.max()                      #每一列的最大值
df.min()                      #每一列的最小值
df.median()                   #每一列的中位数
df.std()                      #每一列的标准差

 数据切分与合并

# 切分
df[col]             #根据列名,并以Series的形式返回列
df[[col1, col2]]    #以DataFrame形式返回多列
df.iloc[0,:]        #第一行
df.iloc[:,0]        #第一列
df.iloc[:,:100]     #前100列
df.iloc[0,0]        #第一列的第一个元素
# 合并
df1.append(df2)                 #将df2中的行添加到df1的尾部
pd.concat([df1, df2],axis=1)    #将df2中的列添加到df1的尾部

筛选

df[["year","month","day"]]        # 筛选年月日三个列
df.loc[df["year"] > 2014]      # 筛选2014年后的数据

数据类型

df_loan[\'int_rate\'].round(0).astype(int)

日期操作

# 日期转换(Dec-2019==>2019-12)
df[\'year\'] = pd.to_datetime(df["date"]).dt.year
df[\'month\'] = pd.to_datetime(df["date"]).dt.month
df[\'day\'] = pd.to_datetime(df["date"]).dt.day

分组操作

df.groupby(col)    #对指定列分组
df.groupby([col1,col2])    #多列进行分组
df.groupby(col1)[col2]    #对col1进行分组后,列col2进行均值
df.groupby(["issue_year", "issue_month"]).size()    # 
df.groupby(["issue_month", "issue_year"]).mean()
df.groupby([\'issue_year\', \'loan_condition\']).int_rate.mean()
df_loan.groupby("sub_grade")[\'int_rate\'].count().index
df.sort_values(col)    #按指定列排序数据,默认升序排序 ascending=False降序
df.sort_values([col1,col2], ascending=[True,False]) #先按列col1升序排列,后按col2降序排列数据
df.groupby(col1).agg(np.mean)    #按列coll分组的所有列的均值

增删改查操作

# 修改列的名称
df.columns = [\'a\',\'b\',\'c\']
df = df.rename(columns={"A": "a", "B": "b"},inplace=True)
# 删除
df.drop(["total_bal_ex_mort", \'tot_coll_amt\', \'sub_grade\'], axis=1, inplace=True)  # 删除指定
df = df[~ df[\'issue_d\'].str.contains(\'issue_d\')]  # 删除指定内容的行
df = df.loc[df["issue_d"] != "issue_d"]    # 删除指定内容的行

数据清洗

# 查看那些列全空值
nan_mean = df.isna().mean()
nan_mean = nan_mean[nan_mean != 0].sort_values()
print(nan_mean)
# 查看缺省
check_null = df.isnull().sum().sort_values(ascending=False)/float(len(df))
print(check_null[check_null > 0.2]) # 查看缺省比例大于0.2
# 缺失值处理
print(pd.isnull(df))          # 缺失值True,其他False
print(np.any(pd.isnull(df)))  # 有缺失值True,没有False
print(np.all(pd.notnull(df))) # 没有缺失True,有False
print(pd.isnull(df).any())    # 每列是否有缺失
print(pd.notnull(df).all())   # 每列没有缺失
print(df.dropna())    # 删除所有的缺失值
print(df.fillna("NULL"))  # 替换NULL
# 替换
data_new = df.replace("?",value=np.nan)
print(data_new.dropna())
# 去重
df.drop_duplicates()

 

版权声明:本文为jumpkin1122原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jumpkin1122/p/11517169.html