读取数据
import pandas as pd
# 读取csv
df = pd.read_csv('./test.csv')
# 读取excel
df = pd.read_excel('E:/Code/回归/4.13_data.xlsx', sheet_name=0)
# 含行索引的df读取,这里以id列为行索引
df = pd.read_csv('./test.csv', index_col='id')
# 写入csv
df.to_csv('./test_out.csv')
# 写入excel
df.to_excel('trans_plan.xlsx', index=False, encoding='utf-8')
数据展示
# 简单查看df前三行
print(df.head(3))
# 查看df统计特征
df.describe()
数据索引
一、loc,iloc,[]
1.1 loc方法
这里行索引是规定好的列,列索引是列名。不是行列号哦!
获取行数据
# 指定行索引,获取行
print(df.loc['f']) # 单行
print(df.loc[['a', 'f']]) # 多行
print(df.loc[1:5]) # 多行,左右均为闭区间
获取列数据
# 指定列索引,获取列
df.loc[:,'Height'].head() # 单列索引
df.loc[:,['Height', 'Math']].head() # 多列索引
联合索引
df.loc['a':'c','Height':'Math'].head()
函数式索引
df.loc[lambda x:x['Gender']=='M']
布尔索引
loc中能传入的只有布尔列表和索引子集构成的列表
df.loc[df['Address'].isin(['street_7', 'street_4'])]
# 或者写成
df.loc[df['Address']=='street_7' or df['Address']=='street_4']
1.2 iloc方法
这里行列索引均是行列号~ 较为常用
获取行数据
df.iloc[3] # 单行数据
df.iloc[3:5] # 多行数据,左开右闭区间
获取列数据
df.iloc[:,3] # 单列数据
df.iloc[:,7::-2] # 多列数据
联合索引
df.iloc[3::4,7::-2]
注:iloc中接收的参数只能为整数或整数列表或布尔列表,不能使用布尔Series,如果要用就必须如下把values拿出来
df.iloc[(df['School']=='S_1').values]
1.3 []方法
Series的操作
pd.Series(df['Math'], index=df.index) # 定义Series
s[5] # 单元素索引
s[0:4] # 多行索引
s[s > 80] # 布尔索引
Dataframe的操作
df[1:2] # 索引df的第一行 左闭右开
df['name'] # 索引df的一列
df[['School', 'Math']] # 多列索引
df[df['Gender']=='F'] # 布尔索引
# 当bool索引有两个判断条件时,不要写and符号,要写&,不然会报错!!!
df[(df['time']>7) & (df['time']<8)]
二、遍历技巧
for index, row in df.iterrows():
df.loc[df[df["country"] == row['country']].index, 'name'] = 'something'
定义df
df = pd.DataFrame(columns=['A', 'B', 'C', 'D'])
df['A'] = lst_a
df排序
df.sort_values(by=['col1']) # 按单列排序,默认升序
df.sort_values(by=['col1', 'col2']) # 按多列排序
df.sort_values(by='col1', ascending=False) # 降序
df.sort_values(by='col4', key=lambda col: col.str.lower()) # 含lambda函数的排序
df求和
sum_int = df['index'].sum()
sum_str = df['times'].sum()
(26条消息) pandas 对列的相关操作_pandas对列操作_冷漩的博客-CSDN博客
df数据整理
问题描述:
现在的df数据表有一列是‘加油站’,另一列是‘日期’,另一列是‘当日销量’,想要把它整理成一列代表一个加油站,一行代表一个日期,销量数据填入的格式
df.pivot_table(index='日期', columns='加油站', values='当日销量')
# 这个语句会把你的数据表按照日期和加油站进行分组,然后把当日销量填入对应的位置。
df.apply应用
1. lambda函数
df['new_column'] = df.apply(lambda x: x['column_a'], axis=1)
2. 自拟函数
2.1 返回多个值版
def func_com(row):
return row['A'], row['B']
result = df.apply(func_com, axis=1, result_type='expand')
df['new1'] = result[0]
df['new2'] = result[1]
2.2 需要传参版
注意参数顺序以及和row的相对顺序!
def func(row, str, address):
return row['A']
all_df['A'] = all_df.apply(func, args=(str_new, row['A']),axis=1)
df去重
df = df.drop_duplicates('salary')
df求第几大值的函数
# 第二大
tmp_value = df['salary'].nlargest(2)
tmp_value = tmp_value.values[1]