Python ile excel üzerinde belirli veriyi çekme

Merhabalar,
Benim bir Klasör içinde 10 adet Excel dosyam var. her bir Excel dosyasının içeriği temel olarak aynı
Öğrenci Numarası - Öğrenci Adı Soyadı - Öğrenci Sınıfı - Öğrenci Seçtiği Ders

10 adet excel dosyasıda bu şekilde bir içerik yapısına sahip her sınıfın öğrencileri farklı ben bu 10 adet excel dosyasını bir adet olarak yapabilirim ama bu şekilde olması gerekiyor.

yapmak istediğim olayı ise bir klasör içinde yer alan bu excel dosyaları içerisinde python üzerinde sorgulama yapıp sonuç döndürmek istiyorum. yani python içerisinde ben öğrenci numarası yazdığımda arkaplanda 10 adet xlsx dosyasının içeriğini tarayıp ilgili öğrenci numarasına ait bilgileri getirmesi gerekiyor. şu tarz bir şey var ama Python Kullanarak Excel’den Veri Çekmek | by Mustafa Batuhan Eraslan | Medium

bu tam olarak işimi görmüyor ama benzer mantıkta terminal tarzı çalışan bir şey lazım tüm xlsx dosyalarını tarayan

Merhaba,
Aşağıdaki konuları incelerseniz istediğiniz şeyi yapabileceğinizi söyleyebilirim.
Yine sorun yaşarsanız, denediğiniz,kodları da paylaşarak tekrar yardım isteyebilirsiniz.

Tekrar Merhaba,
Rastgele bilgiler yazdığım 3 adet dosya oluşturup deneme yaptım.
Aşağıdaki kod, istediğin şekilde sonuç almanı sağlayacaktır.
Kodu ve çıktısını inceleyebilirsin.
Sorgu sonucu öğrenci bilgilerinin hangi dosyada bulunduğunun tespiti için veri çerçevesine ve sonuca Dosya Adi sütunu eklenmiştir.

1. alternatif;

KOD;

import pandas as pd
import glob

dosyalar = glob.glob("*.xls*")
print("'.py' dosyası ile aynı dizindeki tüm '.xls*' dosyaları listesi:\n", dosyalar)    # bu satırı yazdırmaya gerek yok, kontrol amaçlı eklenmiştir

df_tumu = pd.DataFrame()	# boş bir Veri Çerçevesi

for sayi in range(len(dosyalar)):
	df = pd.read_excel(dosyalar[sayi])
	df["Dosya Adi"] = dosyalar[sayi]
	df_tumu = pd.concat([df_tumu, df])

print("Birleştirilen tüm excel dosyalarının içeriği:\n", df_tumu)	# bu satırı yazdırmaya gerek yok, kontrol amaçlı eklenmiştir

numara = int(input("Ogrenci numarasını girin: "))	# sorgulanacak öğrenci numarasını belirt

print(df_tumu[df_tumu["Ogrenci No"] == numara])		# Filtre sonucunu ekrana yazdır. 

ÇIKTI:

'.py' dosyası ile aynı dizindeki tüm '.xls*' dosyaları listesi:
 ['3A.xlsx', '5F.xlsx', '6C.xlsx']

Birleştirilen tüm excel dosyalarının içeriği:
    Ogrenci No     Adi Soyadi Sınıf Sectigi Ders Dosya Adi
0         301       Ali KARA    3A    Matematik   3A.xlsx
1         302     Ayşe NAZLI    3A  Fen Bilgisi   3A.xlsx
2         303  Hüseyin HAFIZ    3A     Coğrafya   3A.xlsx
0         501     Elif ŞEKER    5F       Türkçe   5F.xlsx
1         502     Ahmet TAHA    5F    Matematik   5F.xlsx
2         503    Yusuf HIZLI    5F        Tarih   5F.xlsx
3         504      Burak BEY    5F   Bilgisayar   5F.xlsx
0         601       Ebru GÜL    6C  Din Kültürü   6C.xlsx
1         602       Arzu ŞEN    6C     Biyoloji   6C.xlsx
2         603     Hilal DURU    6C        Fizik   6C.xlsx

Ogrenci numarasını girin: 502

   Ogrenci No  Adi Soyadi Sınıf Sectigi Ders Dosya Adi
1         502  Ahmet TAHA    5F    Matematik   5F.xlsx

kontrol amaçlı eklenmiş olan print() fonksiyonu satırlarını siler ya da yorum haline getirip kodu çalıştırısan sadece aşağıdaki çıktıyı göreceksin.

Ogrenci numarasını girin: 502

   Ogrenci No  Adi Soyadi Sınıf Sectigi Ders Dosya Adi
1         502  Ahmet TAHA    5F    Matematik   5F.xlsx

2. alternatif

KOD;
Eğer Ogrenci No sütununu Veri çerçevesinin indeksi yapmak isterseniz aşağıdaki kodu kullanabilirsiniz.

import pandas as pd
import glob

dosyalar = glob.glob("*.xls*")

df_tumu = pd.DataFrame()	# boş bir Veri Çerçevesi

for sayi in range(len(dosyalar)):
	df = pd.read_excel(dosyalar[sayi], index_col="Ogrenci No")
	df["Dosya Adi"] = dosyalar[sayi]
	df_tumu = pd.concat([df_tumu, df])

numara = int(input("Ogrenci numarasını girin: "))	# sorgulanacak öğrenci numarasını belirt

print(df_tumu[df_tumu.index == numara])		# Filtre sonucunu ekrana yazdır. 

ÇIKTI:

Ogrenci numarasını girin: 502
            Adi Soyadi Sınıf Sectigi Ders Dosya Adi
Ogrenci No                                         
502         Ahmet TAHA    5F    Matematik   5F.xlsx

2 Beğeni

Tamamdır Hocam elinize sağlık ve ilgiliniz için Teşekkür ederim.

Merhaba, Rica ederim.

Kodun biraz daha gelişmiş hali aşağıdadır;

  • Öğrenci numarasını Sıfır olarak yazıp ENTER tuşuna basıncaya kadar döngü devam edecek, Sürekli Öğrenci numarası sorgulanıp çıktı verilecek. Numara olarak Sıfır yazıldığında ekrana Program Sonlandırıldı... bilgisi yazılacak,
  • Sorgulanan öğrenci numarası, dosya içeriklerinde olmadığı zaman ekrana *** Öğrenci Numarası Bulunamadı *** mesajı yazdırılacak ve döngü devam edecek, yeni numara girilmesi istenecek,
  • Öğrenci numarası yerine sayısal değerin dışında birşey yazılması halinde, ekrana Geçerli bir sayı değeri girin mesajı yazılacak
import pandas as pd
import glob

dosyalar = glob.glob("*.xls*")
df_tumu = pd.DataFrame()	# boş bir Veri Çerçevesi

for sayi in range(len(dosyalar)):
	df = pd.read_excel(dosyalar[sayi], index_col="Ogrenci No")
	df["Dosya Adi"] = dosyalar[sayi]
	df_tumu = pd.concat([df_tumu, df])
	
while True:
	print("\nProgramdan çıkmak için 0 (sıfır) ve ardından ENTER tuşuna basın.")
	no = input("Ogrenci numarasını girin: ")	# sorgulanacak öğrenci numarasını belirt
	
	try:
		numara = int(no)
		
		if numara == 0:
			print("\nProgram Sonlandırıldı...")
			break
		
		elif numara in df_tumu.index:
			print(df_tumu[df_tumu.index == numara])		# Filtre sonucunu ekrana yazdır. 

		else:
			print("\n*** Öğrenci Numarası Bulunamadı ***")

		
	except ValueError:
		print("Geçerli bir sayı değeri girin")
1 Beğeni

tam istediğim gibi oldu teşekkür ederim ellerine sağlık hocam

Rica ederim.
Sorunuz tam olarak cevaplandıysa, ilgili gönderiyi çözüm olarak işaretleyip konuyu kapatabilirsiniz.