my_friend = [['zhangsan', 18, '男'], ['lisi', 17, '女']]
df = pd.DataFrame(my_friend, columns=['unasename', 'age', 'gender'])
df
my_friend = [{'username': 'zhangsan', 'age': 18, 'gender': '男'}, {'username': 'lisi', 'age': 17, 'gender': '女'}]
df = pd.DataFrame(my_friend)
df
username age gender
0 zhangsan 18 男
1 lisi 17 女
pandas read_csv() 参数
1. filepath_or_buffer: 文件路径或对象,需要读取的CSV文件的路径。
2. sep or delimiter: 分隔符,默认为,。用于指定列之间的分隔符。
3. header: 默认为'infer'。用于指定行号作为列名。如果没有表头,设置为None。
4. 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: 是否应该删除包含太多字段的行,默认为True。
22. 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('::')
)
import pymysql
conn = pymysql.connect(
host='',
user='',
password='',
database='demo',
charset='utf8'
)
ratings = pd.read_sql(sql='select * from sys_user', con=conn)
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)
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}')
# 使用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']
# 使用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的版本号
print(pd.__version__)
# 使用dtypes属性查看每列的数据类型
data_types = df.dtypes
print(data_types)
A int64
B object
C float64
D bool
dtype: object
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 | 最大值 |
使用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])
第2至5行 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
column_B = df['B']
selected_columns = df[['B', 'C']]
column_B_with_loc = df.loc[:, 'B']
column_B_with_loc = df.loc[[0, 3]:, 'B']
multiple_columns_with_loc = df.loc[:, ['B', 'C']]
first_column = df.iloc[:, 0] # This selects the first column
first_two_columns = df.iloc[:, :2] # This selects the first two columns
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'])
# 选择目标行和目标列
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']]
# 选择某一行的要素列: 选择第一行第二列的数据
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'] 更直接且效率更高