pandas(四十四)pandas100个神仙级用法

一、如何将一个列表转成Pandas的数据框

  • 列表类型,需要指定列名columns;不指定默认 0、1、2
    my_friend = [['zhangsan', 18, '男'], ['lisi', 17, '女']]
    df = pd.DataFrame(my_friend, columns=['unasename', 'age', 'gender'])
    df
    
  • 字典,可不指定列名columns;不指定,默认字典key值;指定则为自定义
    my_friend = [{'username': 'zhangsan', 'age': 18, 'gender': '男'}, {'username': 'lisi', 'age': 17, 'gender': '女'}]
    df = pd.DataFrame(my_friend)
    df
    
    	username	age	gender
    0	zhangsan	181	lisi		17

二、如何从一个CSV文件中读取数据到一个Pandas数据框

  • pandas read_csv() 参数

    1. filepath_or_buffer: 文件路径或对象,需要读取的CSV文件的路径。
    2. sep or delimiter: 分隔符,默认为,。用于指定列之间的分隔符。
    3. header: 默认为'infer'。用于指定行号作为列名。如果没有表头,设置为None4. names: 默认为None。用于结果的列名列表。
    5. index_col: 默认为None。列名或列号,或者列名/列号的序列,用作结果DataFrame的行索引。
    6. usecols: 默认为None。返回一个数据子集,该子集只包含指定的列。
    7. dtype: 列的数据类型。例如,{'a': np.float64, 'b': np.int32}8. skiprows: 要跳过的行数或行号的集合。
    9. na_values: 要识别为NaN的值的列表或集合。
    10. na_filter: 默认为True。检测丢失的值标记(空值或者na_values)。
    11. skip_blank_lines: 默认为True。如果为True,则跳过空行;否则它们将被识别为NaN。
    12. parse_dates: 需要解析为日期的列。
    13. date_parser: 用于解析日期的函数。
    14. nrows: 要读取的行数。
    15. compression: 文件的压缩类型,例如:'gzip', 'bz2', 'zip', 'xz'16. thousands: 千位分隔符,例如:','或者 '.'17. decimal: 用于分隔整数和小数部分的字符,默认为'.'18. encoding: 文件的字符编码。utf-8;gbk
    19. skipfooter: 跳过文件末尾的行数。
    20. comment: 识别为注释的字符。
    21. error_bad_lines: 是否应该删除包含太多字段的行,默认为True22. warn_bad_lines: 如果找到错误的行,是否应发出警告,默认为True
  • 读取CSV, 使用默认的标题行、逗号分隔符号

    df = pd.read_csv('./titanic_train.csv')
    df
    
  • 读取txt, 自己指定分隔符,标题行

    ratings = pd.read_csv(
        fpath,
        sep='\t',     # 指定分隔符、列名
        header=None,  # 告诉pd文件没有表头
        names=['userId','movieId','rating','timestamp'] # 自己设置标题行
    )
    
  • 读取txt, 自己指定分隔符,标题行

    df = pd.read_csv(
        './ratings.dat',
        sep="::",
        engine='python',
        names='UserID::movieID::Rating::Timestamp'.split('::')
    )
    

三、如何通过pandas创建数据到mysql数据库里面

  • pymysql 插入数据
    import pymysql
    conn = pymysql.connect(
        host='',
        user='',
        password='',
        database='demo',
        charset='utf8'
    )
    ratings = pd.read_sql(sql='select * from sys_user', con=conn)
    
  • 使用sqlalchemy 插入数据
    import pandas as pd
    from sqlalchemy import create_engine
    
    # 创建一个简单的DataFrame
    data = {
        'name': ['John', 'Anna', 'Mike'],
        'age': [28, 22, 32],
        'city': ['New York', 'Paris', 'Berlin']
    }
    df = pd.DataFrame(data)
    
    # 创建与MySQL数据库的连接
    # 格式:dialect+driver://username:password@host:port/database
    engine = create_engine('mysql+pymysql://username:password@localhost:3306/mydatabase')
    
    # 使用to_sql函数写入数据
    df.to_sql('mytable', engine, if_exists='replace', index=False)
    

四、如何查看一个Pandas数据框的行数和列数

import pandas as pd

# 创建一个示例DataFrame
data = {
    'A': [1, 2, 3, 4],
    'B': ['a', 'b', 'c', 'd'],
    'C': [1.1, 2.2, 3.3, 4.4]
}
df = pd.DataFrame(data)

# 使用shape属性查看行数和列数
rows, cols = df.shape

print(f'Number of rows: {rows}')
print(f'Number of columns: {cols}')

五、如何查看一个Pandas数据框的列名?

# 使用columns属性查看列名
column_names = df.columns
column_names_list = list(df.columns)

print(column_names)
print(column_names_list)
Index(['A', 'B', 'C'], dtype='object')

['A', 'B', 'C']

六、如何查看一个Pandas数据框的索引?

# 使用index属性查看索引
index_values = df.index
index_list = list(df.index)
print(index_values)
print(index_list)
RangeIndex(start=0, stop=4, step=1)
[0, 1, 2, 3]

七、如何查看一个Pandas数据框的索引?

# 打印pandas的版本号
print(pd.__version__)

八、如何查看一个Pandas数据框的数据类型?

# 使用dtypes属性查看每列的数据类型
data_types = df.dtypes

print(data_types)
A      int64
B     object
C    float64
D       bool
dtype: object

九、如何查看一个Pandas数据框的数据摘要统计信息?

import pandas as pd

# 创建一个示例DataFrame
data = {
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'a'],
    'C': [1.1, 2.2, 3.3, 4.4, 5.5]
}
df = pd.DataFrame(data)

# 使用describe方法获取数据摘要统计信息
summary = df.describe()
summary_all = df.describe(include='all')

print(summary)
print(summary_all)
               A    B         C
count   5.000000    5  5.000000
unique       NaN    4       NaN
top          NaN    a       NaN
freq         NaN    2       NaN
mean    3.000000  NaN  3.300000
std     1.581139  NaN  1.739253
min     1.000000  NaN  1.100000
25%     2.000000  NaN  2.200000
50%     3.000000  NaN  3.300000
75%     4.000000  NaN  4.400000
max     5.000000  NaN  5.500000
名称 解释 名称 解释
count 非空值的数量 unique 唯一值的数量
top 出现频率最高的值 freq 最高频率的值出现的次数
mean 平均值 std 标准偏差
min 最小值 25% 第25百分位数
50% 中位数 75% 第75百分位数
max 最大值

十、如何选择一个Pandas数据框的行?

  • 使用loc方法:通过标签索引选择行

    df.loc[index_label]
    
  • 使用iloc方法:通过整数位置索引选择行

    df.iloc[index_position]
    
  • 根据条件选择行:使用布尔索引

    df[df['column_name'] == value]
    
  • 使用head和tail方法:分别选择数据框的前几行和后几​​行

    df.head(n)  # 获取前n行
    df.tail(n)  # 获取后n行
    
  • 使用query方法:使用查询字符串选择行

    df.query("column_name == value")
    
  • 简单示例
    loc切片操作中,'y’是包含的
    iloc切片操作中,结束位置是不包含的

    2行       			df.loc[1])25行       		df.loc[[1, 4]])
    第x到y的行   		df.loc['x':'y']
    选择w和z的行,B和C的列 df.loc[['w', 'z'], ['B', 'C']]2行  				df.iloc[1]2到第3行			df.iloc[1:3]
    
    选择A列值为3的行   	df[df['A'] == 3]
    选择前3行			df.head(3)
    选择A列值为3的行 		df.query("A == 3")
    
    选择y行A列的元素 		df.loc['y', 'A'])   # 输出:3
    选择第三行第一列的元素  df.iloc[2, 0])      # 输出:3
    

十一、如何选择一个Pandas数据框的列?

  • 通过列名:使用数据框名称和列名可以直接提取列
    column_B = df['B']
    
  • 通过多个列名:选择多个列,向数据框提交一个列名列表
    selected_columns = df[['B', 'C']]
    
  • 通过loc:基于行标签行和列
    column_B_with_loc = df.loc[:, 'B']
    column_B_with_loc = df.loc[[0, 3]:, 'B']
    multiple_columns_with_loc = df.loc[:, ['B', 'C']]
    
  • 通过iloc:根据列的整数位置选择列
    first_column = df.iloc[:, 0]  # This selects the first column
    first_two_columns = df.iloc[:, :2]  # This selects the first two columns
    

十二、如何选择一个Pandas数据框的行和列?

import pandas as pd

data = {
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': ['!', '@', '#', '$', '%']
}
df = pd.DataFrame(data, index=['w', 'x', 'y', 'z', 'v'])
  • loc:通过标签选择行和列
    # 选择目标行和目标列
    cell_value = df.loc['row_label', 'column_label']
    # 选择行和多列:
    row_subset = df.loc['row_label', ['column_label1', 'column_label2']]
    # 选择多行和项目列
    column_subset = df.loc[['row_label1', 'row_label2'], 'column_label']
    # 选择多行和多列:
    subset = df.loc[['row_label1', 'row_label2'], ['column_label1', 'column_label2']]
    
  • iloc:通过整数位置选择行和列
    # 选择某一行的要素列: 选择第一行第二列的数据
    cell_value = df.iloc[0, 1]
    # 选择某一行的多列 选择前1行和前两列的数据
    row_subset = df.iloc[0, 0:2] 
    # 选择多行的项目列:选择前两行第一列
    column_subset = df.iloc[0:2, 0] 
    # 选择多行和多列:选择前两行、前两列
    subset = df.iloc[0:2, 0:2] 
    
  • 双重索引:先行后列
    # 使用loc选择行,然后直接使用列名选择列
    data_w_B_another = df.loc['w']['B']
    等价 
    df.loc['w', 'B'] 更直接且效率更高
    
    data_1_B = df.iloc[0]['B']
    等价
    df.iloc[0, 'B'] 更直接且效率更高
    

你可能感兴趣的:(pandas,pandas)