Python数据分析会用到的dataframe方法汇总(全)

本文将dataframe的应用分为以下几类:
1. 创建dataframe的方法

2. Dataframe读取文件的方法
3. 数据类型的转换
4. 增删改查 操作
5. 统计函数汇总


1. 创建dataframe的多种方法

以下四种类型可以创建dataframe:

  1. 通过字典创建DataFrame
  2. 通过列表创建DataFrame
  3. 通过numpy ndarray创建dataframe
  4. 通过一个Series对象创建

2. 使用Dataframe读取文件
   

1. 读取Excel 和csv文件
 import pandas as pd   
#excel
    data = pd.read_excel("C://Desktop//工作簿1.xlsx",sheetname='sheet1',header=0,names=['第一列','第二列','第三列'])
    #csv
    data = pd.read_csv('C://Desktop//工作簿1.csv',sep=',',header=None,names=["第一列","第二列","第三列"],encoding='utf-8')

其中, read_excel的第一个位置的文件的路径

           sheetname:指定读取excel中的哪一个工作表;

           names:列名命名或重命名
           header : 用作列名的行号,默认为header=0(表明第一行为列名);如果                   header=None,则没有列名行。

           encoding  :文件编码方式,编码为utf-8 ,以免打开有乱码  

2. 读取txt文件
    #txt
import pandas as pd
    data = pd.read_table('C://Desktop//工作簿1.txt', sep = '\t', header = None, names = ['第一列','第二列','第三列'])
3. 连接sql数据库
    from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://username:password@host:port/database')#类型+驱动+用户名+密码+服务器地址+端口+数据库名称
    df=pd.read_sql_query('select * from 表名',con=engine) #查询语句+engine


3. Dataframe不同数据类型的转换


1. 转换成字典(dict):df.to_dict()
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})

# 转换为字典,默认形式(列名作为键,数据作为值的列表)
dict_default = df.to_dict()

print(dict_default)

to_dict()方法的orient参数可以接受几个不同的值,用于控制字典的格式。

  • 'list':每列的数据作为值的列表,忽略行索引。
  • 'series':每列的数据作为pandas.Series对象,忽略行索引。
  • 'split':返回一个包含行索引和列名的字典。
  • 'records':返回一个字典列表,每个字典对应一行数据。
  • 'index':以行索引作为键,列名和数据作为值的嵌套字典。
#转换为字典,使用不同的orient参数的储存
dict_list = df.to_dict(orient='list')
dict_records = df.to_dict(orient='records')
dict_index = df.to_dict(orient='index')

print("字典形式 - 列表:", dict_list)
print("字典形式 - 记录:", dict_records)
print("字典形式 - 索引:", dict_index)

结果:
字典形式 - 列表: {'A': [1, 2, 3], 'B': ['a', 'b', 'c']}
字典形式 - 记录: [{'A': 1, 'B': 'a'}, {'A': 2, 'B': 'b'}, {'A': 3, 'B': 'c'}]
字典形式 - 索引: {0: {'A': 1, 'B': 'a'}, 1: {'A': 2, 'B': 'b'}, 2: {'A': 3, 'B': 'c'}}

2. 转换成列表(list):to_list()
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})

# 将DataFrame的列转换为列表
column_to_list = df['A'].tolist()

print(column_to_list)

   其他特殊转换:

1. 将dataframe的特定某一行转列表:

rows_to_list= df.iloc[0].tolist()
print(rows_to_list)

#[1, 'a']

 2. 将DataFrame的所有行转换为列表:

rows_to_list= [list(row) for index, row in df.iterrows()]
print(rows_to_list)

#[[1, 'a'], [2, 'b'], [3, 'c']]

3.  将DataFrame的整体数据转换为嵌套列表,即:每个内部列表代表一行数据

data_to_list = df.values.tolist()
print(data_to_list)

#[[1, 'a'], [2, 'b'], [3, 'c']]

3. 转换成元组(tuple): tuple
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})

#将DataFrame的整体数据转换为元组的列表
data_to_tuples = tuple(df.to_numpy()) #需要先转成数组

print(data_to_tuples)
#((1, 'a'), (2, 'b'), (3, 'c'))

   其他特殊转换:

# 将列转换为元组

columns_to_tuples = tuple(zip(df.to_numpy()))

print(columns_to_tuples )

#将每一行转换为元组

rows_to_tuples = [row for index, row in df.iterrows()]

print(rows_to_tuples )

# 将行和列都转换为元组

rows_columns_to_tuples = [(row.Index, tuple(row)) for index, row in df.iterrows()]
4. 转换成json字符串:df.to_json()

注意:当使用to_json()方法时,DataFrame中的NaN值将被转换为json中的null值。如果你不希望这样,可以在转换之前对DataFrame进行清洗或填充。

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})

# 将DataFrame转换为JSON字符串
json_str = df.to_json(orient='records')

4. 增删改查 操作

1. 增:
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})

#插入一列到最后
df['c']=[4,5,6] #df['列名']=value
print(df)

#插入到固定位置--第一个参数是位置(第一列)
df.insert(0,'AA',  [1, 2, 3], allow_duplicates=False)#allow_duplicates=False不允许列名重复。

  
2. 删:

删除列

df.drop('C', axis=1, inplace=True) ## 删除列名C,axis=1表示操作的是列

删除行

df.drop(0, axis=0, inplace=True) #删除第1行,第一个位置是行数,axis=0是行,默认删除行
3. 改:

表头重命名:rename 

import pandas as pd
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})
df.rename(columns={'A':'新的名称A','B':'新的名称B'}, inplace = True)

print(df)

修改列名: 可以重新赋值给DataFramecolumns属性来修改列名。

df.columns = ['X', 'Y'] # 将列名A, B改为X, Y

  • 修改数据: 可以直接通过索引或loc来修改数据。

df.loc[0, 'A'] = 10# 修改第一行 、A列的值为10 (第一个位置是行数,第二个是列名)
df.at[0, 'B'] = 20 #或者用at去修改
print(df) 

    重置索引

 df = df.reset_index(drop=True)

处理整个dataframe的前后字符串空格:   

df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
4. 查:

 读取前5条 

  df.head()


查看某列的类型唯一项

df['列名'].unique()


查看数据集的信息

df.info()

描述统计

df.describe()

读取列名(表title)
df.columns


读取某一列
df['列名']


5. 统计函数汇总


  1.查询某列的异常的日期(使用isin 判断是否存在)
df = df[~df['update_time'].isin(['2022-02-30', '2022-02-29','2021-2-30', '2021-2-29'])]
#这里是将异常的日期去除

 isin的方法也可以找到dataframe里不含某个list的一列,返回列的序号

df = pd.DataFrame({
    'A': ['1', '2', '3'],
    'B': ['a', 'b', 'c'],
    'c': [4,   5,   None]
})

lst=[4,5]

df[~df['c'].isin(lst)] 

结果:
   A  B   c
2  3  c NaN
    ```
2. 对dataframe日期格式的规范化

1 处理order_date订单时间,将其规范化

df['order_date']=pd.to_datetime(df.order_date,format="%Y%m%d")


 2 对月份数据进行计算

 df['month']=df.order_dt.values.astype('datetime64[M]')

#df.order_date.values是将df.order_dt转换成数组的形式,然后使用astype函数将数组转化为datetime64格式,M的意思是以月份进行划分,方便后续的计算


 3. 日期按照月份聚合
    

grouped_month=df.groupby('month') #给聚合的月份一个新的命名,放在最右边的列
或者
df= df.set_index('month')#会把日期放到最左边列

 3. 去重的写法
df.groupby('month').user_id.apply(lambda x:len(x.drop_duplicates()))

Python数据分析会用到的dataframe方法汇总(全)_第1张图片
    
    
    

你可能感兴趣的:(python,数据分析,开发语言)