pandas lessons系列文章
lesson_one—通过sort和max方法 获取csv文件中最值数据
lesson_two—通过unique()、describe()和groupby() 统计csv文件中的数据
1.构建数据
def create_data():
# 初始数据集: 婴儿名字和出生率
names = ['Bob','Jessica','Mary','John','Mel']
random.seed(500)# 创建一个种子
# 从 names 列表中选在一个随机名字并执行 1000 次
random_names = [names[random.randint(0,len(names)-1)] for i in range(1000)]
# 打印前10个名字
print(random_names[:10])
births = [random.randint(0,1000) for i in range(1000)]
# 打印前10个生日
print(births[:10])
BabyDataList = list(zip(random_names, births))
# 打印前十个
print(BabyDataList[:10])
return BabyDataList
结果:
['John', 'Mel', 'Mel', 'John', 'Mary', 'John', 'Jessica', 'Bob', 'Mary', 'Mel']
[665, 799, 763, 580, 330, 402, 499, 118, 7, 20]
[('John', 665), ('Mel', 799), ('Mel', 763), ('John', 580), ('Mary', 330), ('John', 402), ('Jessica', 499), ('Bob', 118), ('Mary', 7), ('Mel', 20)]
这边用到了随机数生成的
random()
函数,生成一个随机性强的数据,便于后期的处理
2.写入文件
BabyDataSet = create_data()
# df 是一个 DataFrame对象。 你可以把这个对象理解为包含了 BabyDataset 的内容而格式非常象一个 sql 表格或者 Excel 的数据表
df = pd.DataFrame(data = BabyDataSet, columns=['Names', 'Births'])
print(df[:10])
# 将df数据输出到csv文件中
df.to_csv('births1000.csv', index=False, header=True)
结果:
Names Births
0 John 665
1 Mel 799
2 Mel 763
3 John 580
4 Mary 330
5 John 402
6 Jessica 499
7 Bob 118
8 Mary 7
9 Mel 20
如果对 DataFrame
结构不了解的话可以参考这篇博客:Pandas数据结构–Series、DataFrame详解
3.读取文件
# 读取csv文件
Location = r'./births1000.csv'
df = pd.read_csv(Location)
4.统计数据
4.1 unique()方法
# 使用 dataframe 的 unique 属性找出 "Names" 列的所有唯一的(unique)的记录。
# 方法一
for x in df['Names'].unique():
print(x)
unique()
方法返回参数数组中所有不同的值,并按照从小到大排序
关于unique()
函数的详细用法可以参考这篇博客:https://blog.csdn.net/qq_41325698/article/details/87557262
John
Mel
Mary
Jessica
Bob
4.2 describe() 方法
# 方法二
print(df['Names'].describe())
describe()
函数的详细用法可以参考这篇博客:pandas describe()函数使用介绍
count 1000
unique 5
top Mary
freq 220
4.3 groupby() 方法
# 通过groupby函数进行统计计算
# 创建一个 groupby 的对象
name = df.groupby('Names')
# 在 groupby 对象上执行求和(sum)的功能
df = name.sum()
print(df)
结果:
Names Births
Bob 94505
Jessica 98358
John 106004
Mary 101369
Mel 109685
groupby()
函数的详细用法可以参考这篇博客:pandas groupby()函数使用及参数详解
这样就实现了对于csv文件中数据的某些关键词出现次数的统计,对应值总数的统计,欢迎留言讨论其他的方法